summaryrefslogtreecommitdiff
path: root/src/Text
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2022-03-12 10:23:25 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2022-03-12 10:23:25 -0800
commitf9a4e049c5840394289db3f430bc5777a60fed8c (patch)
tree5bb0acbbefc434570dce2476962b68c60ad71fbd /src/Text
parent6abcde0bf77a9a2ddee08ecc2dea90ef95cdd681 (diff)
T.P.Readers.LaTeX.Parsing: Monoid and Semigroup instances for TokStream.
Diffstat (limited to 'src/Text')
-rw-r--r--src/Text/Pandoc/Readers/LaTeX/Parsing.hs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX/Parsing.hs b/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
index 20e495c29..bf1ebbb9c 100644
--- a/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
+++ b/src/Text/Pandoc/Readers/LaTeX/Parsing.hs
@@ -251,6 +251,14 @@ instance Default LaTeXState where
data TokStream = TokStream !Bool [Tok]
deriving (Show)
+instance Semigroup TokStream where
+ (TokStream exp1 ts1) <> (TokStream exp2 ts2) =
+ TokStream (if null ts1 then exp2 else exp1) (ts1 <> ts2)
+
+instance Monoid TokStream where
+ mempty = TokStream False mempty
+ mappend = (<>)
+
instance Monad m => Stream TokStream m Tok where
uncons (TokStream _ []) = return Nothing
uncons (TokStream _ (t:ts)) = return $ Just (t, TokStream False ts)