git.iko.soy/typeable/pandoc
on master help sign in
Code cleanup in TexMath reader.

git-svn-id: https://pandoc.googlecode.com/svn/trunk@1318 788f1e2b-df1e-0410-8736-df70ead52e1b

commitd5c73ac42ad0e7c711a5fdfcc3a9f75f0484c682 authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> dateSun 13 Jul 2008, 23:58 (18 years ago) parent43ebdaf
1 file changed+14−1
Text/Pandoc/Readers/TeXMath.hs+14−1
Text/Pandoc/Readers/TeXMath.hs+14−1
@@ -37,16 +37,20 @@ import Text.Pandoc.Definition
3737-- | Converts a string of raw TeX math to a list of 'Pandoc' inlines.
3838readTeXMath :: String -> [Inline]
3939readTeXMath inp = case parse teXMath ("formula: " ++ inp) inp of
40− Left err -> [Str inp] -- if unparseable, just include original
40+ Left _ -> [Str inp] -- if unparseable, just include original
4141 Right res -> res
4242
43+teXMath :: GenParser Char st [Inline]
4344teXMath = manyTill mathPart eof >>= return . concat
4445
46+mathPart :: GenParser Char st [Inline]
4547mathPart = whitespace <|> superscript <|> subscript <|> symbol <|>
4648 argument <|> digits <|> letters <|> misc
4749
50+whitespace :: GenParser Char st [Inline]
4851whitespace = many1 space >> return []
4952
53+symbol :: GenParser Char st [Inline]
5054symbol = try $ do
5155 char '\\'
5256 res <- many1 letter
@@ -54,6 +58,7 @@ symbol = try $ do
5458 Just m -> return [Str m]
5559 Nothing -> return [Str $ "\\" ++ res]
5660
61+argument :: GenParser Char st [Inline]
5762argument = try $ do
5863 char '{'
5964 res <- many mathPart
@@ -62,35 +67,43 @@ argument = try $ do
6267 then [Str " "]
6368 else [Str "{"] ++ concat res ++ [Str "}"]
6469
70+digits :: GenParser Char st [Inline]
6571digits = do
6672 res <- many1 digit
6773 return [Str res]
6874
75+letters :: GenParser Char st [Inline]
6976letters = do
7077 res <- many1 letter
7178 return [Emph [Str res]]
7279
80+misc :: GenParser Char st [Inline]
7381misc = do
7482 res <- noneOf "}"
7583 return [Str [res]]
7684
85+scriptArg :: GenParser Char st [Inline]
7786scriptArg = try $ do
7887 (try (do{char '{'; r <- many mathPart; char '}'; return $ concat r}))
7988 <|> symbol
8089 <|> (do{c <- (letter <|> digit); return [Str [c]]})
8190
91+superscript :: GenParser Char st [Inline]
8292superscript = try $ do
8393 char '^'
8494 arg <- scriptArg
8595 return [Superscript arg]
8696
97+subscript :: GenParser Char st [Inline]
8798subscript = try $ do
8899 char '_'
89100 arg <- scriptArg
90101 return [Subscript arg]
91102
103+withThinSpace :: String -> String
92104withThinSpace str = "\x2009" ++ str ++ "\x2009"
93105
106+teXsymbols :: [(String, String)]
94107teXsymbols =
95108 [("alpha","\x3B1")
96109 ,("beta", "\x3B2")