Add an option for dumping a single table

This commit is contained in:
2024-02-06 12:14:07 +01:00
parent 3160ceab08
commit 23271d6f6c
6 changed files with 164 additions and 87 deletions

View File

@@ -10,7 +10,7 @@ module Graphics.Fountainhead
import Data.ByteString (ByteString)
import Data.Void (Void)
import Graphics.Fountainhead.Dumper (dumpTables, DumpError(..))
import Graphics.Fountainhead.Dumper (dumpTable, dumpTables, DumpError(..))
import Graphics.Fountainhead.Parser (ParseErrorBundle, fontDirectoryP)
import Graphics.Fountainhead.TrueType (FontDirectory(..))
import qualified Text.Megaparsec as Megaparsec
@@ -42,8 +42,8 @@ parseFontDirectoryFromFile fontFile =
}
in Megaparsec.runParser' fontDirectoryP initialState
dumpFontFile :: FilePath -> IO (Either DumpError Text.Builder.Builder)
dumpFontFile fontFile = do
dumpFontFile :: FilePath -> Maybe String -> IO (Either DumpError Text.Builder.Builder)
dumpFontFile fontFile tableName = do
let dumpRequest = maybe dumpTables dumpTable tableName
(processedState, initialResult) <- parseFontDirectoryFromFile fontFile
pure $ first DumpParseError initialResult >>= dumpTables processedState
pure $ first DumpParseError initialResult >>= dumpRequest processedState