Marius Lysakerrud

haskell-scfg

active · https://git.sr.ht/~lundy/haskell-scfg · updated

Haskell library for scfg. Available on Hackage.

Usage

{-# LANGUAGE OverloadedStrings #-}

import Data.Scfg (
    Directive (directiveChildren, directiveName, directiveParams),
    ParseError (errorMessage),
    parse,
 )
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.IO as TIO

config :: Text
config =
    "train \"Shinkansen\" {\n\
    \  model \"E5\" {\n\
    \    max-speed 320km/h\n\
    \    weight 453.5t\n\
    \    lines-served \"Tōhoku\" \"Hokkaido\"\n\
    \  }\n\
    \  model \"E7\" {\n\
    \    max-speed 275km/h\n\
    \    weight 540t\n\
    \    lines-served \"Hokuriku\" \"Jōetsu\"\n\
    \  }\n\
    \}\n"

main :: IO ()
main = case parse config of
    Left err -> TIO.putStrLn $ "parse error: " <> errorMessage err
    Right cfg -> do
        let models = concatMap directiveChildren cfg
        mapM_ (\m -> TIO.putStrLn $ T.unwords (directiveName m : directiveParams m)) models

Documentation

View documentation on Hackage

Releases

Dependencies

Tested with

License

MIT

Git repository

git clone https://git.sr.ht/~lundy/haskell-scfg

Contributing

Send patches and bug reports to my public-inbox.