module Text.LaTeX.Result (
Result
, toResult
, fromResult
, resCharsStr
, pfinal
, bfinal
, comm
, ks
, bs
, sep
, ds
) where
import Data.Monoid
import Data.DString (DString)
import Data.String.ToString (toString)
import GHC.Exts (fromString)
type Result = DString
toResult :: String -> Result
toResult = fromString
fromResult :: Result -> String
fromResult = toString
inStart :: Result -> (Result -> Result)
inStart = mappend
inEnd :: Result -> (Result -> Result)
inEnd = flip mappend
inBoth :: Result -> Result -> (Result -> Result)
inBoth r0 r1 x = mconcat [r0,x,r1]
pfinal :: Result -> Result
pfinal = inEnd $ toResult "\n\n"
bfinal :: Result -> Result
bfinal = inEnd $ toResult "{}"
comm :: Result -> Result
comm = inStart $ toResult "\\"
ks :: Result -> Result
ks = inBoth (toResult "{") (toResult "}")
bs :: Result -> Result
bs = inBoth (toResult "[") (toResult "]")
sep :: Result -> Result
sep = inBoth (toResult "|") (toResult "|")
ds :: Result -> Result
ds = inBoth (toResult "$") (toResult "$")
resCharsStr_ :: [(Char,String)]
resCharsStr_ =
[ ('#',"\\#")
, ('$',"\\$")
, ('%',"\\%")
, ('^',"\\^{}")
, ('&',"\\&")
, ('_',"\\_")
, ('{',"\\{")
, ('}',"\\}")
, ('~',"\\~{}")
, ('\\',"\\textbackslash") ]
resCharsStr :: [(Char,Result)]
resCharsStr = map (\(x,y) -> (x,toResult y)) resCharsStr_