From 4fe28e947a38bffdbb4eeccb16e62dc1824b9c74 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 29 Oct 2018 22:33:11 -0700 Subject: ZimWiki writer: remove extra indentation on lists. Closes #4963. --- src/Text/Pandoc/Writers/ZimWiki.hs | 16 ++-- test/writer.zimwiki | 176 ++++++++++++++++++------------------- 2 files changed, 96 insertions(+), 96 deletions(-) diff --git a/src/Text/Pandoc/Writers/ZimWiki.hs b/src/Text/Pandoc/Writers/ZimWiki.hs index a583b07b1..40efaa8cf 100644 --- a/src/Text/Pandoc/Writers/ZimWiki.hs +++ b/src/Text/Pandoc/Writers/ZimWiki.hs @@ -183,17 +183,13 @@ blockToZimWiki opts (Table capt aligns _ headers rows) = do unlines (map renderRow rows') blockToZimWiki opts (BulletList items) = do - indent <- gets stIndent - modify $ \s -> s { stIndent = stIndent s ++ "\t" } contents <- mapM (listItemToZimWiki opts) items - modify $ \s -> s{ stIndent = indent } -- drop 1 (stIndent s) } + indent <- gets stIndent return $ vcat contents ++ if null indent then "\n" else "" blockToZimWiki opts (OrderedList _ items) = do - indent <- gets stIndent - modify $ \s -> s { stIndent = stIndent s ++ "\t", stItemNum = 1 } contents <- mapM (orderedListItemToZimWiki opts) items - modify $ \s -> s{ stIndent = indent } -- drop 1 (stIndent s) } + indent <- gets stIndent return $ vcat contents ++ if null indent then "\n" else "" blockToZimWiki opts (DefinitionList items) = do @@ -246,16 +242,20 @@ vcat = intercalate "\n" -- | Convert bullet list item (list of blocks) to ZimWiki. listItemToZimWiki :: PandocMonad m => WriterOptions -> [Block] -> ZW m String listItemToZimWiki opts items = do - contents <- blockListToZimWiki opts items indent <- gets stIndent + modify $ \s -> s { stIndent = indent ++ "\t" } + contents <- blockListToZimWiki opts items + modify $ \s -> s{ stIndent = indent } return $ indent ++ "* " ++ contents -- | Convert ordered list item (list of blocks) to ZimWiki. orderedListItemToZimWiki :: PandocMonad m => WriterOptions -> [Block] -> ZW m String orderedListItemToZimWiki opts items = do - contents <- blockListToZimWiki opts items indent <- gets stIndent + modify $ \s -> s { stIndent = indent ++ "\t" } + contents <- blockListToZimWiki opts items + modify $ \s -> s{ stIndent = indent } itemnum <- gets stItemNum --modify $ \s -> s { stItemNum = itemnum + 1 } -- this is not strictly necessary for zim as zim does its own renumbering return $ indent ++ show itemnum ++ ". " ++ contents diff --git a/test/writer.zimwiki b/test/writer.zimwiki index 91f018b52..6e59ae8a2 100644 --- a/test/writer.zimwiki +++ b/test/writer.zimwiki @@ -61,8 +61,8 @@ E-mail style: > > A list: > -> 1. item one -> 1. item two +> 1. item one +> 1. item two > > Nested block quotes: > @@ -108,126 +108,126 @@ These should not be escaped: \$ \\ \> \[ \{ Asterisks tight: - * asterisk 1 - * asterisk 2 - * asterisk 3 +* asterisk 1 +* asterisk 2 +* asterisk 3 Asterisks loose: - * asterisk 1 - * asterisk 2 - * asterisk 3 +* asterisk 1 +* asterisk 2 +* asterisk 3 Pluses tight: - * Plus 1 - * Plus 2 - * Plus 3 +* Plus 1 +* Plus 2 +* Plus 3 Pluses loose: - * Plus 1 - * Plus 2 - * Plus 3 +* Plus 1 +* Plus 2 +* Plus 3 Minuses tight: - * Minus 1 - * Minus 2 - * Minus 3 +* Minus 1 +* Minus 2 +* Minus 3 Minuses loose: - * Minus 1 - * Minus 2 - * Minus 3 +* Minus 1 +* Minus 2 +* Minus 3 ===== Ordered ===== Tight: - 1. First - 1. Second - 1. Third +1. First +1. Second +1. Third and: - 1. One - 1. Two - 1. Three +1. One +1. Two +1. Three Loose using tabs: - 1. First - 1. Second - 1. Third +1. First +1. Second +1. Third and using spaces: - 1. One - 1. Two - 1. Three +1. One +1. Two +1. Three Multiple paragraphs: - 1. Item 1, graf one. +1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. - 1. Item 2. - 1. Item 3. +1. Item 2. +1. Item 3. ===== Nested ===== +* Tab * Tab * Tab - * Tab Here’s another: - 1. First - 1. Second: - * Fee - * Fie - * Foe - 1. Third +1. First +1. Second: + * Fee + * Fie + * Foe +1. Third Same thing but with paragraphs: - 1. First - 1. Second: - * Fee - * Fie - * Foe - 1. Third +1. First +1. Second: + * Fee + * Fie + * Foe +1. Third ===== Tabs and spaces ===== - * this is a list item indented with tabs - * this is a list item indented with spaces - * this is an example list item indented with tabs - * this is an example list item indented with spaces +* this is a list item indented with tabs +* this is a list item indented with spaces + * this is an example list item indented with tabs + * this is an example list item indented with spaces ===== Fancy list markers ===== - 1. begins with 2 - 1. and now 3 +1. begins with 2 +1. and now 3 with a continuation - 1. sublist with roman numerals, starting with 4 - 1. more items - 1. a subsublist - 1. a subsublist + 1. sublist with roman numerals, starting with 4 + 1. more items + 1. a subsublist + 1. a subsublist Nesting: - 1. Upper Alpha - 1. Upper Roman. - 1. Decimal start with 6 - 1. Lower alpha with paren +1. Upper Alpha + 1. Upper Roman. + 1. Decimal start with 6 + 1. Lower alpha with paren Autonumbering: - 1. Autonumber. - 1. More. - 1. Nested. +1. Autonumber. +1. More. + 1. Nested. Should not be a list item: @@ -291,8 +291,8 @@ computer * **orange** orange fruit - 1. sublist - 1. sublist +1. sublist +1. sublist ====== HTML Blocks ====== @@ -435,21 +435,21 @@ Ellipses…and…and…. ====== LaTeX ====== - * - * $2+2=4$ - * $x \in y$ - * $\alpha \wedge \omega$ - * $223$ - * $p$-Tree - * Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ - * Here’s one that has a line break in it: $\alpha + \omega \times x^2$. +* +* $2+2=4$ +* $x \in y$ +* $\alpha \wedge \omega$ +* $223$ +* $p$-Tree +* Here’s some display math: $$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$ +* Here’s one that has a line break in it: $\alpha + \omega \times x^2$. These shouldn’t be math: - * To get the famous equation, write ''$e = mc^2$''. - * $22,000 is a //lot// of money. So is $34,000. (It worked if “lot” is emphasized.) - * Shoes ($20) and socks ($5). - * Escaped ''$'': $73 //this should be emphasized// 23$. +* To get the famous equation, write ''$e = mc^2$''. +* $22,000 is a //lot// of money. So is $34,000. (It worked if “lot” is emphasized.) +* Shoes ($20) and socks ($5). +* Escaped ''$'': $73 //this should be emphasized// 23$. Here’s a LaTeX table: @@ -461,11 +461,11 @@ Here’s a LaTeX table: Here is some unicode: - * I hat: Î - * o umlaut: ö - * section: § - * set membership: ∈ - * copyright: © +* I hat: Î +* o umlaut: ö +* section: § +* set membership: ∈ +* copyright: © AT&T has an ampersand in their name. @@ -572,9 +572,9 @@ Here’s an [[script?foo=1&bar=2|inline link in pointy braces]]. With an ampersand: http://example.com/?foo=1&bar=2 - * In a list? - * http://example.com/ - * It should. +* In a list? +* http://example.com/ +* It should. An e-mail address: @@ -614,6 +614,6 @@ If you want, you can indent every line, but you can also be lazy and just indent > Notes can go in quotes. **{Note:** In quote.**}** - 1. And in list items. **{Note:** In list.**}** +1. And in list items. **{Note:** In list.**}** This paragraph should not be part of the note, as it is not indented. -- cgit v1.2.3