Example #1
0
 /**
  * @param string $filename
  * @return GridFile
  * @throws MflParserException
  */
 protected function extractGridFile($filename)
 {
     $file = new GridFile($filename);
     $source = $file->getFileHandler();
     $reader = self::getReaderForFile($file);
     if (null === $reader) {
     }
     $x = 1;
     $y = 1;
     try {
         while (($character = fgetc($source)) !== false) {
             if ($character === "\n") {
                 $x++;
                 $y = 1;
             } else {
                 $y++;
             }
             $reader->readGridFileCharacter($file, $character);
         }
     } catch (Exception $e) {
         //echo $e->getTraceAsString();
         throw new MflParserException($x, $y, $e->getMessage());
     } finally {
         fclose($source);
     }
     if ($reader->handleDefinitionForce() && sizeof($file->getDefinitions()) !== sizeof($file->getLevels())) {
         throw new MflParserException($x, $y, sprintf("Number of definitions (%d) and levels (%d) doesn't match", sizeof($file->getDefinitions()), sizeof($file->getLevels())));
     }
     return $file;
 }