heterocephalus-1.0.5.0: src/Text/Heterocephalus/Parse.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TemplateHaskell #-}
module Text.Heterocephalus.Parse
( module Text.Heterocephalus.Parse
, module Text.Heterocephalus.Parse.Control
, module Text.Heterocephalus.Parse.Doc
, module Text.Heterocephalus.Parse.Option
) where
import Text.Heterocephalus.Parse.Control (Content(..), parseLineControl)
import Text.Heterocephalus.Parse.Doc
(Doc(..), parseDocFromControls)
import Text.Heterocephalus.Parse.Option
(ParseOptions(..), createParseOptions, defaultParseOptions)
docFromString :: ParseOptions -> String -> [Doc]
docFromString opts s =
case parseDoc opts s of
Left s' -> error s'
Right d -> d
parseDoc :: ParseOptions -> String -> Either String [Doc]
parseDoc opts s = do
controls <- parseLineControl opts s
case parseDocFromControls controls of
Left parseError -> Left $ show parseError
Right docs -> Right docs