on master help sign in
Abstract out the code for markdown parsing, making it easier to switch out the implementation
commitc8643484be8dc867c361387b04c3f665b62119ca authorEvan Czaplicki <info@elm-lang.org> dateFri 22 Nov 2013, 12:12 (13 years ago) parentf0d9d3b
6 files changed+12−11
compiler/Generate/JavaScript.hs+2−3 compiler/Generate/Markdown.hs+6 compiler/Generate/Noscript.hs+2−2 compiler/Parse/Declaration.hs−1 compiler/Parse/Expression.hs+1−3 compiler/SourceSyntax/Expression.hs+1−2
compiler/Generate/JavaScript.hs+2−3
@@ -6,9 +6,9 @@ import Control.Monad.State
66import qualified Data.List as List
77import qualified Data.Map as Map
88import qualified Data.Set as Set
9−import qualified Text.Pandoc as Pan
109
1110import qualified Generate.Cases as Case
11+import qualified Generate.Markdown as MD
1212import SourceSyntax.Everything
1313import SourceSyntax.Location
1414import qualified Transform.SortDefinitions as SD
@@ -186,9 +186,8 @@ expression (L span expr) =
186186 ctor = (prop "ctor", string (makeSafe name))
187187 fields = zipWith (\n e -> (prop ("_" ++ show n), e)) [0..]
188188
189− Markdown doc _ -> return $ obj "Text.text" <| string (pad ++ md ++ pad)
189+ Markdown md _ -> return $ obj "Text.text" <| string (pad ++ MD.toHtml md ++ pad)
190190 where pad = "<div style=\"height:0;width:0;\">&nbsp;</div>"
191− md = Pan.writeHtmlString Pan.def doc
192191
193192definition :: Def () () -> State Int [Statement ()]
194193definition def =
compiler/Generate/Markdown.hsnew file+6
@@ -0,0 +1,6 @@
1+module Generate.Markdown where
2+
3+import Text.Pandoc
4+
5+toHtml :: String -> String
6+toHtml = writeHtmlString def . readMarkdown def
compiler/Generate/Noscript.hs+2−2
@@ -2,7 +2,7 @@ module Generate.Noscript (noscript) where
22
33import Data.List (isInfixOf)
44import SourceSyntax.Everything
5−import qualified Text.Pandoc as Pan
5+import qualified Generate.Markdown as MD
66
77noscript :: Module t v -> String
88noscript modul = concat (extract modul)
@@ -49,7 +49,7 @@ instance Extract (Expr t v) where
4949 Case e cases -> concatMap (f . snd) cases
5050 Data _ es -> concatMap f es
5151 MultiIf es -> concatMap (f . snd) es
52− Markdown doc _ -> [ Pan.writeHtmlString Pan.def doc ]
52+ Markdown md _ -> [ MD.toHtml md ]
5353 _ -> []
5454
5555extractLink src txt =
compiler/Parse/Declaration.hs−1
@@ -6,7 +6,6 @@ import qualified Data.List as List
66import qualified Data.Set as Set
77import Text.Parsec hiding (newline,spaces)
88import Text.Parsec.Indent
9−import qualified Text.Pandoc as Pan
109
1110import Parse.Helpers
1211import qualified Parse.Expression as Expr
compiler/Parse/Expression.hs+1−3
@@ -5,7 +5,6 @@ import Control.Applicative ((<$>), (<*>))
55import Data.List (foldl')
66import Text.Parsec hiding (newline,spaces)
77import Text.Parsec.Indent
8−import qualified Text.Pandoc as Pan
98
109import Parse.Helpers
1110import qualified Parse.Pattern as Pattern
@@ -56,8 +55,7 @@ listTerm = markdown' <|> braces (try range <|> ExplicitList <$> commaSep expr)
5655
5756 markdown' = do
5857 (rawText, exprs) <- markdown interpolation
59− let md = Pan.readMarkdown Pan.def (filter (/='\r') rawText)
60− return (Markdown md exprs)
58+ return (Markdown (filter (/='\r') rawText) exprs)
6159
6260 span xs = "<span id=\"md" ++ show (length xs) ++
6361 "\" style=\"font-family:monospace;\">{{ ... }}</span>"
compiler/SourceSyntax/Expression.hs+1−2
@@ -3,7 +3,6 @@ module SourceSyntax.Expression where
33
44import Data.Data
55import Data.List (intercalate)
6−import qualified Text.Pandoc as Pandoc
76import SourceSyntax.PrettyPrint
87import Text.PrettyPrint as P
98import qualified SourceSyntax.Helpers as Help
@@ -30,7 +29,7 @@ data Expr t v
3029 | Insert (LExpr t v) String (LExpr t v)
3130 | Modify (LExpr t v) [(String, LExpr t v)]
3231 | Record [(String, LExpr t v)]
33− | Markdown Pandoc.Pandoc [LExpr t v]
32+ | Markdown String [LExpr t v]
3433 deriving (Eq, Show, Data, Typeable)
3534
3635data Def tipe var