git.iko.soy/typeable/pandoc
on master help sign in
Use Reader.
05b94c3Matej Kollar
src/Text/Pandoc/Writers/MediaWiki.hs+95−96
@@ -39,6 +39,7 @@ import Text.Pandoc.Templates (renderTemplate')
39import Text.Pandoc.XML ( escapeStringForXML )
39import Text.Pandoc.XML ( escapeStringForXML )
40import Data.List ( intersect, intercalate, intersperse )
40import Data.List ( intersect, intercalate, intersperse )
41import Network.URI ( isURI )
41import Network.URI ( isURI )
42+import Control.Monad.Reader
42import Control.Monad.State
43import Control.Monad.State
43
44
44data WriterState = WriterState {
45data WriterState = WriterState {
@@ -47,20 +48,23 @@ data WriterState = WriterState {
47 , stUseTags :: Bool -- True if we should use HTML tags because we're in a complex list
48 , stUseTags :: Bool -- True if we should use HTML tags because we're in a complex list
48 }
49 }
49
50
51+type MediaWikiWriter = ReaderT WriterOptions (State WriterState)
52+
50-- | Convert Pandoc to MediaWiki.
53-- | Convert Pandoc to MediaWiki.
51writeMediaWiki :: WriterOptions -> Pandoc -> String
54writeMediaWiki :: WriterOptions -> Pandoc -> String
52writeMediaWiki opts document =
55writeMediaWiki opts document =
53− evalState (pandocToMediaWiki opts document)
56+ evalState (runReaderT (pandocToMediaWiki document) opts)
54 WriterState { stNotes = False, stListLevel = [], stUseTags = False }
57 WriterState { stNotes = False, stListLevel = [], stUseTags = False }
55
58
56-- | Return MediaWiki representation of document.
59-- | Return MediaWiki representation of document.
57−pandocToMediaWiki :: WriterOptions -> Pandoc -> State WriterState String
60+pandocToMediaWiki :: Pandoc -> MediaWikiWriter String
58−pandocToMediaWiki opts (Pandoc meta blocks) = do
61+pandocToMediaWiki (Pandoc meta blocks) = do
62+ opts <- ask
59 metadata <- metaToJSON opts
63 metadata <- metaToJSON opts
60− (fmap trimr . blockListToMediaWiki opts)
64+ (fmap trimr . blockListToMediaWiki)
61− (inlineListToMediaWiki opts)
65+ inlineListToMediaWiki
62 meta
66 meta
63− body <- blockListToMediaWiki opts blocks
67+ body <- blockListToMediaWiki blocks
64 notesExist <- get >>= return . stNotes
68 notesExist <- get >>= return . stNotes
65 let notes = if notesExist
69 let notes = if notesExist
66 then "\n<references />"
70 then "\n<references />"
@@ -78,51 +82,50 @@ escapeString :: String -> String
78escapeString = escapeStringForXML
82escapeString = escapeStringForXML
79
83
80-- | Convert Pandoc block element to MediaWiki.
84-- | Convert Pandoc block element to MediaWiki.
81−blockToMediaWiki :: WriterOptions -- ^ Options
82− -> Block -- ^ Block element
85+blockToMediaWiki :: Block -- ^ Block element
83− -> State WriterState String
86+ -> MediaWikiWriter String
84
87
85−blockToMediaWiki _ Null = return ""
88+blockToMediaWiki Null = return ""
86
89
87−blockToMediaWiki opts (Div attrs bs) = do
90+blockToMediaWiki (Div attrs bs) = do
88− contents <- blockListToMediaWiki opts bs
91+ contents <- blockListToMediaWiki bs
89 return $ render Nothing (tagWithAttrs "div" attrs) ++ "\n\n" ++
92 return $ render Nothing (tagWithAttrs "div" attrs) ++ "\n\n" ++
90 contents ++ "\n\n" ++ "</div>"
93 contents ++ "\n\n" ++ "</div>"
91
94
92−blockToMediaWiki opts (Plain inlines) =
95+blockToMediaWiki (Plain inlines) =
93− inlineListToMediaWiki opts inlines
96+ inlineListToMediaWiki inlines
94
97
95-- title beginning with fig: indicates that the image is a figure
98-- title beginning with fig: indicates that the image is a figure
96−blockToMediaWiki opts (Para [Image txt (src,'f':'i':'g':':':tit)]) = do
99+blockToMediaWiki (Para [Image txt (src,'f':'i':'g':':':tit)]) = do
97 capt <- if null txt
100 capt <- if null txt
98 then return ""
101 then return ""
99− else ("|caption " ++) `fmap` inlineListToMediaWiki opts txt
102+ else ("|caption " ++) `fmap` inlineListToMediaWiki txt
100 let opt = if null txt
103 let opt = if null txt
101 then ""
104 then ""
102 else "|alt=" ++ if null tit then capt else tit ++ capt
105 else "|alt=" ++ if null tit then capt else tit ++ capt
103 return $ "[[Image:" ++ src ++ "|frame|none" ++ opt ++ "]]\n"
106 return $ "[[Image:" ++ src ++ "|frame|none" ++ opt ++ "]]\n"
104
107
105−blockToMediaWiki opts (Para inlines) = do
108+blockToMediaWiki (Para inlines) = do
106 useTags <- get >>= return . stUseTags
109 useTags <- get >>= return . stUseTags
107 listLevel <- get >>= return . stListLevel
110 listLevel <- get >>= return . stListLevel
108− contents <- inlineListToMediaWiki opts inlines
111+ contents <- inlineListToMediaWiki inlines
109 return $ if useTags
112 return $ if useTags
110 then "<p>" ++ contents ++ "</p>"
113 then "<p>" ++ contents ++ "</p>"
111 else contents ++ if null listLevel then "\n" else ""
114 else contents ++ if null listLevel then "\n" else ""
112
115
113−blockToMediaWiki _ (RawBlock f str)
116+blockToMediaWiki (RawBlock f str)
114 | f == Format "mediawiki" = return str
117 | f == Format "mediawiki" = return str
115 | f == Format "html" = return str
118 | f == Format "html" = return str
116 | otherwise = return ""
119 | otherwise = return ""
117
120
118−blockToMediaWiki _ HorizontalRule = return "\n-----\n"
121+blockToMediaWiki HorizontalRule = return "\n-----\n"
119
122
120−blockToMediaWiki opts (Header level _ inlines) = do
123+blockToMediaWiki (Header level _ inlines) = do
121− contents <- inlineListToMediaWiki opts inlines
124+ contents <- inlineListToMediaWiki inlines
122 let eqs = replicate level '='
125 let eqs = replicate level '='
123 return $ eqs ++ " " ++ contents ++ " " ++ eqs ++ "\n"
126 return $ eqs ++ " " ++ contents ++ " " ++ eqs ++ "\n"
124
127
125−blockToMediaWiki _ (CodeBlock (_,classes,_) str) = do
128+blockToMediaWiki (CodeBlock (_,classes,_) str) = do
126 let at = classes `intersect` ["actionscript", "ada", "apache", "applescript", "asm", "asp",
129 let at = classes `intersect` ["actionscript", "ada", "apache", "applescript", "asm", "asp",
127 "autoit", "bash", "blitzbasic", "bnf", "c", "c_mac", "caddcl", "cadlisp", "cfdg", "cfm",
130 "autoit", "bash", "blitzbasic", "bnf", "c", "c_mac", "caddcl", "cadlisp", "cfdg", "cfm",
128 "cpp", "cpp-qt", "csharp", "css", "d", "delphi", "diff", "div", "dos", "eiffel", "fortran",
131 "cpp", "cpp-qt", "csharp", "css", "d", "delphi", "diff", "div", "dos", "eiffel", "fortran",
@@ -137,68 +140,68 @@ blockToMediaWiki _ (CodeBlock (_,classes,_) str) = do
137 else ("<source lang=\"" ++ head at ++ "\">", "</source>")
140 else ("<source lang=\"" ++ head at ++ "\">", "</source>")
138 return $ beg ++ escapeString str ++ end
141 return $ beg ++ escapeString str ++ end
139
142
140−blockToMediaWiki opts (BlockQuote blocks) = do
143+blockToMediaWiki (BlockQuote blocks) = do
141− contents <- blockListToMediaWiki opts blocks
144+ contents <- blockListToMediaWiki blocks
142 return $ "<blockquote>" ++ contents ++ "</blockquote>"
145 return $ "<blockquote>" ++ contents ++ "</blockquote>"
143
146
144−blockToMediaWiki opts (Table capt aligns widths headers rows') = do
147+blockToMediaWiki (Table capt aligns widths headers rows') = do
145 caption <- if null capt
148 caption <- if null capt
146 then return ""
149 then return ""
147 else do
150 else do
148− c <- inlineListToMediaWiki opts capt
151+ c <- inlineListToMediaWiki capt
149 return $ "|+ " ++ trimr c ++ "\n"
152 return $ "|+ " ++ trimr c ++ "\n"
150 let headless = all null headers
153 let headless = all null headers
151 let allrows = if headless then rows' else headers:rows'
154 let allrows = if headless then rows' else headers:rows'
152 tableBody <- (concat . intersperse "|-\n") `fmap`
155 tableBody <- (concat . intersperse "|-\n") `fmap`
153− mapM (tableRowToMediaWiki opts headless aligns widths)
156+ mapM (tableRowToMediaWiki headless aligns widths)
154 (zip [1..] allrows)
157 (zip [1..] allrows)
155 return $ "{|\n" ++ caption ++ tableBody ++ "|}\n"
158 return $ "{|\n" ++ caption ++ tableBody ++ "|}\n"
156
159
157−blockToMediaWiki opts x@(BulletList items) = do
160+blockToMediaWiki x@(BulletList items) = do
158 oldUseTags <- get >>= return . stUseTags
161 oldUseTags <- get >>= return . stUseTags
159 listLevel <- get >>= return . stListLevel
162 listLevel <- get >>= return . stListLevel
160 let useTags = oldUseTags || not (isSimpleList x)
163 let useTags = oldUseTags || not (isSimpleList x)
161 if useTags
164 if useTags
162 then do
165 then do
163 modify $ \s -> s { stUseTags = True }
166 modify $ \s -> s { stUseTags = True }
164− contents <- mapM (listItemToMediaWiki opts) items
167+ contents <- mapM listItemToMediaWiki items
165 modify $ \s -> s { stUseTags = oldUseTags }
168 modify $ \s -> s { stUseTags = oldUseTags }
166 return $ "<ul>\n" ++ vcat contents ++ "</ul>\n"
169 return $ "<ul>\n" ++ vcat contents ++ "</ul>\n"
167 else do
170 else do
168 modify $ \s -> s { stListLevel = stListLevel s ++ "*" }
171 modify $ \s -> s { stListLevel = stListLevel s ++ "*" }
169− contents <- mapM (listItemToMediaWiki opts) items
172+ contents <- mapM listItemToMediaWiki items
170 modify $ \s -> s { stListLevel = init (stListLevel s) }
173 modify $ \s -> s { stListLevel = init (stListLevel s) }
171 return $ vcat contents ++ if null listLevel then "\n" else ""
174 return $ vcat contents ++ if null listLevel then "\n" else ""
172
175
173−blockToMediaWiki opts x@(OrderedList attribs items) = do
176+blockToMediaWiki x@(OrderedList attribs items) = do
174 oldUseTags <- get >>= return . stUseTags
177 oldUseTags <- get >>= return . stUseTags
175 listLevel <- get >>= return . stListLevel
178 listLevel <- get >>= return . stListLevel
176 let useTags = oldUseTags || not (isSimpleList x)
179 let useTags = oldUseTags || not (isSimpleList x)
177 if useTags
180 if useTags
178 then do
181 then do
179 modify $ \s -> s { stUseTags = True }
182 modify $ \s -> s { stUseTags = True }
180− contents <- mapM (listItemToMediaWiki opts) items
183+ contents <- mapM listItemToMediaWiki items
181 modify $ \s -> s { stUseTags = oldUseTags }
184 modify $ \s -> s { stUseTags = oldUseTags }
182 return $ "<ol" ++ listAttribsToString attribs ++ ">\n" ++ vcat contents ++ "</ol>\n"
185 return $ "<ol" ++ listAttribsToString attribs ++ ">\n" ++ vcat contents ++ "</ol>\n"
183 else do
186 else do
184 modify $ \s -> s { stListLevel = stListLevel s ++ "#" }
187 modify $ \s -> s { stListLevel = stListLevel s ++ "#" }
185− contents <- mapM (listItemToMediaWiki opts) items
188+ contents <- mapM listItemToMediaWiki items
186 modify $ \s -> s { stListLevel = init (stListLevel s) }
189 modify $ \s -> s { stListLevel = init (stListLevel s) }
187 return $ vcat contents ++ if null listLevel then "\n" else ""
190 return $ vcat contents ++ if null listLevel then "\n" else ""
188
191
189−blockToMediaWiki opts x@(DefinitionList items) = do
192+blockToMediaWiki x@(DefinitionList items) = do
190 oldUseTags <- get >>= return . stUseTags
193 oldUseTags <- get >>= return . stUseTags
191 listLevel <- get >>= return . stListLevel
194 listLevel <- get >>= return . stListLevel
192 let useTags = oldUseTags || not (isSimpleList x)
195 let useTags = oldUseTags || not (isSimpleList x)
193 if useTags
196 if useTags
194 then do
197 then do
195 modify $ \s -> s { stUseTags = True }
198 modify $ \s -> s { stUseTags = True }
196− contents <- mapM (definitionListItemToMediaWiki opts) items
199+ contents <- mapM definitionListItemToMediaWiki items
197 modify $ \s -> s { stUseTags = oldUseTags }
200 modify $ \s -> s { stUseTags = oldUseTags }
198 return $ "<dl>\n" ++ vcat contents ++ "</dl>\n"
201 return $ "<dl>\n" ++ vcat contents ++ "</dl>\n"
199 else do
202 else do
200 modify $ \s -> s { stListLevel = stListLevel s ++ ";" }
203 modify $ \s -> s { stListLevel = stListLevel s ++ ";" }
201− contents <- mapM (definitionListItemToMediaWiki opts) items
204+ contents <- mapM definitionListItemToMediaWiki items
202 modify $ \s -> s { stListLevel = init (stListLevel s) }
205 modify $ \s -> s { stListLevel = init (stListLevel s) }
203 return $ vcat contents ++ if null listLevel then "\n" else ""
206 return $ vcat contents ++ if null listLevel then "\n" else ""
204
207
@@ -216,9 +219,9 @@ listAttribsToString (startnum, numstyle, _) =
216 else "")
219 else "")
217
220
218-- | Convert bullet or ordered list item (list of blocks) to MediaWiki.
221-- | Convert bullet or ordered list item (list of blocks) to MediaWiki.
219−listItemToMediaWiki :: WriterOptions -> [Block] -> State WriterState String
222+listItemToMediaWiki :: [Block] -> MediaWikiWriter String
220−listItemToMediaWiki opts items = do
223+listItemToMediaWiki items = do
221− contents <- blockListToMediaWiki opts items
224+ contents <- blockListToMediaWiki items
222 useTags <- get >>= return . stUseTags
225 useTags <- get >>= return . stUseTags
223 if useTags
226 if useTags
224 then return $ "<li>" ++ contents ++ "</li>"
227 then return $ "<li>" ++ contents ++ "</li>"
@@ -227,12 +230,11 @@ listItemToMediaWiki opts items = do
227 return $ marker ++ " " ++ contents
230 return $ marker ++ " " ++ contents
228
231
229-- | Convert definition list item (label, list of blocks) to MediaWiki.
232-- | Convert definition list item (label, list of blocks) to MediaWiki.
230−definitionListItemToMediaWiki :: WriterOptions
233+definitionListItemToMediaWiki :: ([Inline],[[Block]])
231− -> ([Inline],[[Block]])
234+ -> MediaWikiWriter String
232− -> State WriterState String
233−definitionListItemToMediaWiki opts (label, items) = do
235+definitionListItemToMediaWiki (label, items) = do
234− labelText <- inlineListToMediaWiki opts label
236+ labelText <- inlineListToMediaWiki label
235− contents <- mapM (blockListToMediaWiki opts) items
237+ contents <- mapM blockListToMediaWiki items
236 useTags <- get >>= return . stUseTags
238 useTags <- get >>= return . stUseTags
237 if useTags
239 if useTags
238 then return $ "<dt>" ++ labelText ++ "</dt>\n" ++
240 then return $ "<dt>" ++ labelText ++ "</dt>\n" ++
@@ -283,25 +285,23 @@ vcat = intercalate "\n"
283
285
284-- Auxiliary functions for tables:
286-- Auxiliary functions for tables:
285
287
286−tableRowToMediaWiki :: WriterOptions
288+tableRowToMediaWiki :: Bool
287− -> Bool
288 -> [Alignment]
289 -> [Alignment]
289 -> [Double]
290 -> [Double]
290 -> (Int, [[Block]])
291 -> (Int, [[Block]])
291− -> State WriterState String
292+ -> MediaWikiWriter String
292−tableRowToMediaWiki opts headless alignments widths (rownum, cells) = do
293+tableRowToMediaWiki headless alignments widths (rownum, cells) = do
293 cells' <- mapM (\cellData ->
294 cells' <- mapM (\cellData ->
294− tableCellToMediaWiki opts headless rownum cellData)
295+ tableCellToMediaWiki headless rownum cellData)
295 $ zip3 alignments widths cells
296 $ zip3 alignments widths cells
296 return $ unlines cells'
297 return $ unlines cells'
297
298
298−tableCellToMediaWiki :: WriterOptions
299+tableCellToMediaWiki :: Bool
299− -> Bool
300 -> Int
300 -> Int
301 -> (Alignment, Double, [Block])
301 -> (Alignment, Double, [Block])
302− -> State WriterState String
302+ -> MediaWikiWriter String
303−tableCellToMediaWiki opts headless rownum (alignment, width, bs) = do
303+tableCellToMediaWiki headless rownum (alignment, width, bs) = do
304− contents <- blockListToMediaWiki opts bs
304+ contents <- blockListToMediaWiki bs
305 let marker = if rownum == 1 && not headless then "!" else "|"
305 let marker = if rownum == 1 && not headless then "!" else "|"
306 let percent w = show (truncate (100*w) :: Integer) ++ "%"
306 let percent w = show (truncate (100*w) :: Integer) ++ "%"
307 let attrs = ["align=" ++ show (alignmentToString alignment) |
307 let attrs = ["align=" ++ show (alignmentToString alignment) |
@@ -321,75 +321,74 @@ alignmentToString alignment = case alignment of
321 AlignDefault -> "left"
321 AlignDefault -> "left"
322
322
323-- | Convert list of Pandoc block elements to MediaWiki.
323-- | Convert list of Pandoc block elements to MediaWiki.
324−blockListToMediaWiki :: WriterOptions -- ^ Options
325− -> [Block] -- ^ List of block elements
324+blockListToMediaWiki :: [Block] -- ^ List of block elements
326− -> State WriterState String
325+ -> MediaWikiWriter String
327−blockListToMediaWiki opts blocks =
326+blockListToMediaWiki blocks =
328− mapM (blockToMediaWiki opts) blocks >>= return . vcat
327+ mapM blockToMediaWiki blocks >>= return . vcat
329
328
330-- | Convert list of Pandoc inline elements to MediaWiki.
329-- | Convert list of Pandoc inline elements to MediaWiki.
331−inlineListToMediaWiki :: WriterOptions -> [Inline] -> State WriterState String
330+inlineListToMediaWiki :: [Inline] -> MediaWikiWriter String
332−inlineListToMediaWiki opts lst =
331+inlineListToMediaWiki lst =
333− mapM (inlineToMediaWiki opts) lst >>= return . concat
332+ mapM inlineToMediaWiki lst >>= return . concat
334
333
335-- | Convert Pandoc inline element to MediaWiki.
334-- | Convert Pandoc inline element to MediaWiki.
336−inlineToMediaWiki :: WriterOptions -> Inline -> State WriterState String
335+inlineToMediaWiki :: Inline -> MediaWikiWriter String
337
336
338−inlineToMediaWiki opts (Span attrs ils) = do
337+inlineToMediaWiki (Span attrs ils) = do
339− contents <- inlineListToMediaWiki opts ils
338+ contents <- inlineListToMediaWiki ils
340 return $ render Nothing (tagWithAttrs "span" attrs) ++ contents ++ "</span>"
339 return $ render Nothing (tagWithAttrs "span" attrs) ++ contents ++ "</span>"
341
340
342−inlineToMediaWiki opts (Emph lst) = do
341+inlineToMediaWiki (Emph lst) = do
343− contents <- inlineListToMediaWiki opts lst
342+ contents <- inlineListToMediaWiki lst
344 return $ "''" ++ contents ++ "''"
343 return $ "''" ++ contents ++ "''"
345
344
346−inlineToMediaWiki opts (Strong lst) = do
345+inlineToMediaWiki (Strong lst) = do
347− contents <- inlineListToMediaWiki opts lst
346+ contents <- inlineListToMediaWiki lst
348 return $ "'''" ++ contents ++ "'''"
347 return $ "'''" ++ contents ++ "'''"
349
348
350−inlineToMediaWiki opts (Strikeout lst) = do
349+inlineToMediaWiki (Strikeout lst) = do
351− contents <- inlineListToMediaWiki opts lst
350+ contents <- inlineListToMediaWiki lst
352 return $ "<s>" ++ contents ++ "</s>"
351 return $ "<s>" ++ contents ++ "</s>"
353
352
354−inlineToMediaWiki opts (Superscript lst) = do
353+inlineToMediaWiki (Superscript lst) = do
355− contents <- inlineListToMediaWiki opts lst
354+ contents <- inlineListToMediaWiki lst
356 return $ "<sup>" ++ contents ++ "</sup>"
355 return $ "<sup>" ++ contents ++ "</sup>"
357
356
358−inlineToMediaWiki opts (Subscript lst) = do
357+inlineToMediaWiki (Subscript lst) = do
359− contents <- inlineListToMediaWiki opts lst
358+ contents <- inlineListToMediaWiki lst
360 return $ "<sub>" ++ contents ++ "</sub>"
359 return $ "<sub>" ++ contents ++ "</sub>"
361
360
362−inlineToMediaWiki opts (SmallCaps lst) = inlineListToMediaWiki opts lst
361+inlineToMediaWiki (SmallCaps lst) = inlineListToMediaWiki lst
363
362
364−inlineToMediaWiki opts (Quoted SingleQuote lst) = do
363+inlineToMediaWiki (Quoted SingleQuote lst) = do
365− contents <- inlineListToMediaWiki opts lst
364+ contents <- inlineListToMediaWiki lst
366 return $ "\8216" ++ contents ++ "\8217"
365 return $ "\8216" ++ contents ++ "\8217"
367
366
368−inlineToMediaWiki opts (Quoted DoubleQuote lst) = do
367+inlineToMediaWiki (Quoted DoubleQuote lst) = do
369− contents <- inlineListToMediaWiki opts lst
368+ contents <- inlineListToMediaWiki lst
370 return $ "\8220" ++ contents ++ "\8221"
369 return $ "\8220" ++ contents ++ "\8221"
371
370
372−inlineToMediaWiki opts (Cite _ lst) = inlineListToMediaWiki opts lst
371+inlineToMediaWiki (Cite _ lst) = inlineListToMediaWiki lst
373
372
374−inlineToMediaWiki _ (Code _ str) =
373+inlineToMediaWiki (Code _ str) =
375 return $ "<code>" ++ (escapeString str) ++ "</code>"
374 return $ "<code>" ++ (escapeString str) ++ "</code>"
376
375
377−inlineToMediaWiki _ (Str str) = return $ escapeString str
376+inlineToMediaWiki (Str str) = return $ escapeString str
378
377
379−inlineToMediaWiki _ (Math _ str) = return $ "<math>" ++ str ++ "</math>"
378+inlineToMediaWiki (Math _ str) = return $ "<math>" ++ str ++ "</math>"
380− -- note: str should NOT be escaped
379+ -- note: str should NOT be escaped
381
380
382−inlineToMediaWiki _ (RawInline f str)
381+inlineToMediaWiki (RawInline f str)
383 | f == Format "mediawiki" = return str
382 | f == Format "mediawiki" = return str
384 | f == Format "html" = return str
383 | f == Format "html" = return str
385 | otherwise = return ""
384 | otherwise = return ""
386
385
387−inlineToMediaWiki _ (LineBreak) = return "<br />"
386+inlineToMediaWiki (LineBreak) = return "<br />"
388
387
389−inlineToMediaWiki _ Space = return " "
388+inlineToMediaWiki Space = return " "
390
389
391−inlineToMediaWiki opts (Link txt (src, _)) = do
390+inlineToMediaWiki (Link txt (src, _)) = do
392− label <- inlineListToMediaWiki opts txt
391+ label <- inlineListToMediaWiki txt
393 case txt of
392 case txt of
394 [Str s] | escapeURI s == src -> return src
393 [Str s] | escapeURI s == src -> return src
395 _ -> if isURI src
394 _ -> if isURI src
@@ -398,8 +397,8 @@ inlineToMediaWiki opts (Link txt (src, _)) = do
398 where src' = case src of
397 where src' = case src of
399 '/':xs -> xs -- with leading / it's a
398 '/':xs -> xs -- with leading / it's a
400 _ -> src -- link to a help page
399 _ -> src -- link to a help page
401−inlineToMediaWiki opts (Image alt (source, tit)) = do
400+inlineToMediaWiki (Image alt (source, tit)) = do
402− alt' <- inlineListToMediaWiki opts alt
401+ alt' <- inlineListToMediaWiki alt
403 let txt = if (null tit)
402 let txt = if (null tit)
404 then if null alt
403 then if null alt
405 then ""
404 then ""
@@ -407,8 +406,8 @@ inlineToMediaWiki opts (Image alt (source, tit)) = do
407 else "|" ++ tit
406 else "|" ++ tit
408 return $ "[[Image:" ++ source ++ txt ++ "]]"
407 return $ "[[Image:" ++ source ++ txt ++ "]]"
409
408
410−inlineToMediaWiki opts (Note contents) = do
409+inlineToMediaWiki (Note contents) = do
411− contents' <- blockListToMediaWiki opts contents
410+ contents' <- blockListToMediaWiki contents
412 modify (\s -> s { stNotes = True })
411 modify (\s -> s { stNotes = True })
413 return $ "<ref>" ++ contents' ++ "</ref>"
412 return $ "<ref>" ++ contents' ++ "</ref>"
414 -- note - may not work for notes with multiple blocks
413 -- note - may not work for notes with multiple blocks