module Text.LaTeX.Utils (stripTeX, stripTeXR, stripTeXL) where
import Data.Monoid ((<>))
import qualified Data.Text as T
import Text.LaTeX.Base.Syntax (LaTeX (..))
stripTeX :: LaTeX -> LaTeX
stripTeX = stripTeXL . stripTeXR
stripTeXL :: LaTeX -> LaTeX
stripTeXL (TeXRaw str) =
let str' = T.stripStart str
in if T.null str'
then TeXEmpty
else TeXRaw str'
stripTeXL (TeXSeq l r) =
case stripTeXL l of
TeXEmpty -> stripTeXL r
l' -> l' <> r
stripTeXL l = l
stripTeXR :: LaTeX -> LaTeX
stripTeXR (TeXRaw str) =
let str' = T.stripEnd str
in if T.null str'
then TeXEmpty
else TeXRaw str'
stripTeXR (TeXSeq l r) =
case stripTeXR r of
TeXEmpty -> stripTeXR l
r' -> l <> r'
stripTeXR l = l