heterocephalus-1.0.5.0: src/Text/Heterocephalus/Parse/Option.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleContexts #-}
module Text.Heterocephalus.Parse.Option where
import Control.Monad.Reader (MonadReader, reader)
data ParseOptions = ParseOptions
{ parseOptionsControlPrefix :: Char
, parseOptionsVariablePrefix :: Char
}
-- | Default set of parser options.
--
-- Sets 'parseOptionsControlPrefix' to @\'%\'@ and
-- 'parseOptionsVariablePrefix' to @\'#\'@.
defaultParseOptions :: ParseOptions
defaultParseOptions = createParseOptions '%' '#'
createParseOptions
:: Char -- ^ The control prefix.
-> Char -- ^ The variable prefix.
-> ParseOptions
createParseOptions controlPrefix varPrefix = ParseOptions
{ parseOptionsControlPrefix = controlPrefix
, parseOptionsVariablePrefix = varPrefix
}
getControlPrefix :: MonadReader ParseOptions m => m Char
getControlPrefix = reader parseOptionsControlPrefix
getVariablePrefix :: MonadReader ParseOptions m => m Char
getVariablePrefix = reader parseOptionsVariablePrefix