heterocephalus-1.0.3.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
) where
import Text.Heterocephalus.Parse.Control (Content(..), parseLineControl)
import Text.Heterocephalus.Parse.Doc
(Doc(..), parseDocFromControls)
docFromString :: String -> [Doc]
docFromString s =
case parseDoc s of
Left s' -> error s'
Right d -> d
parseDoc :: String -> Either String [Doc]
parseDoc s = do
controls <- parseLineControl s
case parseDocFromControls controls of
Left parseError -> Left $ show parseError
Right docs -> Right docs