@@ -8,6 +8,7 @@ import Data.Char (isAlpha,isDigit)
88import Data.List (intercalate,sortBy,inits)
99import Data.Map (toList)
1010import Data.Maybe (mapMaybe)
11+import qualified Text.Pandoc as Pan
1112
1213import Initialize
1314import Rename (derename)
@@ -141,6 +142,10 @@ toJS' expr =
141142 Let defs e -> jsLet defs e
142143 Case e cases -> caseToJS e cases
143144 Data name es -> (\ss -> jsList $ show name : ss) `liftM` mapM toJS' es
145+ Markdown doc ->
146+ return $ concat [ "text('<div style=\"height:0;width:0;\"> </div>"
147+ , filter (/='\n') $ Pan.writeHtmlString Pan.defaultWriterOptions doc
148+ , "<div style=\"height:0;width:0;\"> </div>')" ]
144149
145150jsLet defs e' = do
146151 body <- (++) `liftM` jsDefs defs `ap` (ret `liftM` toJS' e')
@@ -156,7 +161,7 @@ jsDefs defs = concat `liftM` mapM toDef (sortBy f defs)
156161
157162caseToJS e ps = do
158163 match <- caseToMatch ps
159− var <- liftM (\n -> "vv" ++ show n) guid
164+ var <- liftM (\n -> "case" ++ show n) guid
160165 matches <- matchToJS var match
161166 e' <- toJS' e
162167 return $ concat [ "function(", var, "){"
@@ -176,9 +181,12 @@ matchToJS v (Seq ms) = concat `liftM` mapM (matchToJS v) ms
176181clauseToJS var (Clause name vars e) = do
177182 s <- matchToJS var e
178183 return $ concat [ "\ncase ", show name, ":"
179− , concat $ zipWith toDef vars [ 1 .. length vars ]
184+ , defs
180185 , s ]
181− where toDef v n = assign v (var ++ "[" ++ show n ++ "]")
186+ where toDef v n = v ++ "=" ++ var ++ "[" ++ show n ++ "]"
187+ defs = case vars of [] -> ""
188+ _ -> ("\nvar "++) . (++";") . intercalate "," $
189+ zipWith toDef vars [ 1 .. length vars ]
182190
183191jsNil = "[\"Nil\"]"
184192jsCons e1 e2 = jsList [ show "Cons", e1, e2 ]