/** * @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; }