packages feed

haskintex 0.1.0.0 → 0.1.0.1

raw patch · 2 files changed

+30/−9 lines, 2 files

Files

Main.hs view
@@ -31,6 +31,7 @@   | WriteHaskell Bool Text -- False for Hidden, True for Visible   | EvalHaskell  Bool Text -- False for Command, True for Environment   | Sequence     [Syntax]+    deriving Show -- Show instance for debugging.  -- Parsing @@ -42,8 +43,8 @@   _ <- string "\\begin{writehaskell}"   b <- choice [ string "[hidden]"  >> return False               , string "[visible]" >> return True-              , return v ]-  h <- manyTill anyChar $ try $ string "\\end{writehaskell}"+              , return v ] -- When no option is given, take the default.+  h <- manyTill anyChar $ string "\\end{writehaskell}"   return $ WriteHaskell b $ pack h  p_evalhaskell :: Parser Syntax@@ -52,23 +53,43 @@ p_evalhaskellenv :: Parser Syntax p_evalhaskellenv = do   _ <- string "\\begin{evalhaskell}"-  h <- manyTill anyChar $ try $ string "\\end{evalhaskell}"+  h <- manyTill anyChar $ string "\\end{evalhaskell}"   return $ EvalHaskell True $ pack h  p_evalhaskellcomm :: Parser Syntax p_evalhaskellcomm = do-  _ <- string "\\evalhaskell{"-  h <- manyTill anyChar $ char '}'+  _  <- string "\\evalhaskell{"+  h  <- p_haskell 0   return $ EvalHaskell False $ pack h +p_haskell :: Int -> Parser String+p_haskell n = choice [+    do _ <- char '{'+       ('{':) <$> p_haskell (n+1)+  , do _ <- char '}'+       if n == 0+          then return []+          else ('}':) <$> p_haskell (n-1)+  , do _ <- char '\"'+       liftA2 (++) (('\"':) <$> p_string) (p_haskell n)+  , liftA2 (:) anyChar (p_haskell n)+    ]++p_string :: Parser String+p_string = choice [+    liftA2 (++) (char '\\' >> char '\"' >> return "\\\"") p_string+  , liftA2 (:) (char '\"') (return [])+  , liftA2 (:) anyChar p_string+    ]  + p_writelatex :: Parser Syntax p_writelatex = (WriteLaTeX . pack) <$>   many1 (p_other >>= \b -> if b then anyChar else fail "stop write latex")   where     p_other =-      choice [ string "\\begin{writehaskell}" >> return False-             , string "\\begin{evalhaskell}"  >> return False-             , string "\\evalhaskell"         >> return False+      choice [ string "\\begin{writehaskell}" >> return False -- starts p_writehaskell+             , string "\\begin{evalhaskell}"  >> return False -- starts p_evalhaskellenv+             , string "\\evalhaskell"         >> return False -- starts p_evalhaskellcomm              , return True              ] 
haskintex.cabal view
@@ -1,5 +1,5 @@ name:                haskintex-version:             0.1.0.0+version:             0.1.0.1 synopsis:            Haskell Evaluation inside of LaTeX code. description:   The /haskintex/ program is a tool that reads a LaTeX file and evaluates Haskell expressions contained