aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2018-04-19 13:47:16 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2018-04-19 13:47:16 -0700
commit276894a2f2f7421c3470a4d50af94774ebef62d7 (patch)
tree0a063e23dc4b604076041a75ee6035bb2c626ffc
parentc76565bef5ecdbf1173d23b79dda59df4120cdb9 (diff)
downloadpandoc-276894a2f2f7421c3470a4d50af94774ebef62d7.tar.gz
RST writer: use more consistent indentation.
Previously we used an odd mix of 3- and 4-space indentation. Now we use 3-space indentation, except for ordered lists, where indentation must depend on the width of the list marker. Closes #4563.
-rw-r--r--src/Text/Pandoc/Writers/RST.hs9
-rw-r--r--test/Tests/Writers/RST.hs18
-rw-r--r--test/command/3675.md4
-rw-r--r--test/command/4320.md10
-rw-r--r--test/lhs-test.rst10
-rw-r--r--test/lhs-test.rst+lhs4
-rw-r--r--test/writer.rst120
7 files changed, 86 insertions, 89 deletions
diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs
index 74fc4dca4..cc7131d0a 100644
--- a/src/Text/Pandoc/Writers/RST.hs
+++ b/src/Text/Pandoc/Writers/RST.hs
@@ -263,7 +263,6 @@ blockToRST (Header level (name,classes,_) inlines) = do
return $ nowrap $ hang 3 ".. " (rub $$ name' $$ cls) $$ blankline
blockToRST (CodeBlock (_,classes,kvs) str) = do
opts <- gets stOptions
- let tabstop = writerTabStop opts
let startnum = maybe "" (\x -> " " <> text x) $ lookup "startFrom" kvs
let numberlines = if "numberLines" `elem` classes
then " :number-lines:" <> startnum
@@ -276,11 +275,10 @@ blockToRST (CodeBlock (_,classes,kvs) str) = do
c `notElem` ["sourceCode","literate","numberLines"]] of
[] -> "::"
(lang:_) -> (".. code:: " <> text lang) $$ numberlines)
- $+$ nest tabstop (text str) $$ blankline
+ $+$ nest 3 (text str) $$ blankline
blockToRST (BlockQuote blocks) = do
- tabstop <- gets $ writerTabStop . stOptions
contents <- blockListToRST blocks
- return $ nest tabstop contents <> blankline
+ return $ nest 3 contents <> blankline
blockToRST (Table caption aligns widths headers rows) = do
caption' <- inlineListToRST caption
let blocksToDoc opts bs = do
@@ -338,8 +336,7 @@ definitionListItemToRST :: PandocMonad m => ([Inline], [[Block]]) -> RST m Doc
definitionListItemToRST (label, defs) = do
label' <- inlineListToRST label
contents <- liftM vcat $ mapM blockListToRST defs
- tabstop <- gets $ writerTabStop . stOptions
- return $ nowrap label' $$ nest tabstop (nestle contents <> cr)
+ return $ nowrap label' $$ nest 3 (nestle contents <> cr)
-- | Format a list of lines as line block.
linesToLineBlock :: PandocMonad m => [[Inline]] -> RST m Doc
diff --git a/test/Tests/Writers/RST.hs b/test/Tests/Writers/RST.hs
index 64367a108..29c9328f6 100644
--- a/test/Tests/Writers/RST.hs
+++ b/test/Tests/Writers/RST.hs
@@ -24,23 +24,23 @@ tests = [ testGroup "rubrics"
para $ text "baz"])] =?>
unlines
[ "foo"
- , " .. rubric:: bar"
+ , " .. rubric:: bar"
, ""
- , " baz"]
+ , " baz"]
, "in block quote" =:
blockQuote (header 1 (text "bar")) =?>
- " .. rubric:: bar"
+ " .. rubric:: bar"
, "with id" =:
blockQuote (headerWith ("foo",[],[]) 1 (text "bar")) =?>
unlines
- [ " .. rubric:: bar"
- , " :name: foo"]
+ [ " .. rubric:: bar"
+ , " :name: foo"]
, "with id class" =:
blockQuote (headerWith ("foo",["baz"],[]) 1 (text "bar")) =?>
unlines
- [ " .. rubric:: bar"
- , " :name: foo"
- , " :class: baz"]
+ [ " .. rubric:: bar"
+ , " :name: foo"
+ , " :class: baz"]
]
, testGroup "ligatures" -- handling specific sequences of blocks
[ "a list is closed by a comment before a quote" =: -- issue 4248
@@ -50,7 +50,7 @@ tests = [ testGroup "rubrics"
, ""
, ".."
, ""
- , " quoted"]
+ , " quoted"]
]
, testGroup "inlines"
[ "are removed when empty" =: -- #4434
diff --git a/test/command/3675.md b/test/command/3675.md
index b129c7a63..f75721b56 100644
--- a/test/command/3675.md
+++ b/test/command/3675.md
@@ -7,9 +7,9 @@ print("hello")
^D
.. code:: python
- print("hello")
+ print("hello")
..
- block quote
+ block quote
````
diff --git a/test/command/4320.md b/test/command/4320.md
index 5b0eeb5c1..732b30a3e 100644
--- a/test/command/4320.md
+++ b/test/command/4320.md
@@ -7,9 +7,9 @@
,[BlockQuote
[Para [Strong [Str "thisIsGoingToBeTooLongAnyway"]]]]]]]
^D
-+-------+--------------------------------------+
-| one | two |
-+=======+======================================+
-| ports | **thisIsGoingToBeTooLongAnyway** |
-+-------+--------------------------------------+
++-------+-------------------------------------+
+| one | two |
++=======+=====================================+
+| ports | **thisIsGoingToBeTooLongAnyway** |
++-------+-------------------------------------+
```
diff --git a/test/lhs-test.rst b/test/lhs-test.rst
index 3de2d9ff6..4d012a9f9 100644
--- a/test/lhs-test.rst
+++ b/test/lhs-test.rst
@@ -6,9 +6,9 @@ return a single value:
.. code:: haskell
- unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d
- unsplit = arr . uncurry
- -- arr (\op (x,y) -> x `op` y)
+ unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d
+ unsplit = arr . uncurry
+ -- arr (\op (x,y) -> x `op` y)
``(***)`` combines two arrows into a new arrow by running the two arrows on a
pair of values (one arrow on the first item of the pair and one arrow on the
@@ -16,8 +16,8 @@ second item of the pair).
::
- f *** g = first f >>> second g
+ f *** g = first f >>> second g
Block quote:
- foo bar
+ foo bar
diff --git a/test/lhs-test.rst+lhs b/test/lhs-test.rst+lhs
index eec79c546..6196c39ab 100644
--- a/test/lhs-test.rst+lhs
+++ b/test/lhs-test.rst+lhs
@@ -14,8 +14,8 @@ second item of the pair).
::
- f *** g = first f >>> second g
+ f *** g = first f >>> second g
Block quote:
- foo bar
+ foo bar
diff --git a/test/writer.rst b/test/writer.rst
index 93158f0c3..3353d11d3 100644
--- a/test/writer.rst
+++ b/test/writer.rst
@@ -69,30 +69,30 @@ Block Quotes
E-mail style:
- This is a block quote. It is pretty short.
+ This is a block quote. It is pretty short.
..
- Code in a block quote:
+ Code in a block quote:
- ::
+ ::
- sub status {
- print "working";
- }
+ sub status {
+ print "working";
+ }
- A list:
+ A list:
- 1. item one
- 2. item two
+ 1. item one
+ 2. item two
- Nested block quotes:
+ Nested block quotes:
- nested
+ nested
- ..
+ ..
- nested
+ nested
This should not be a block quote: 2 > 1.
@@ -107,21 +107,21 @@ Code:
::
- ---- (should be four hyphens)
+ ---- (should be four hyphens)
- sub status {
- print "working";
- }
+ sub status {
+ print "working";
+ }
- this code block is indented by one tab
+ this code block is indented by one tab
And:
::
- this code block is indented by two tabs
+ this code block is indented by two tabs
- These should not be escaped: \$ \\ \> \[ \{
+ These should not be escaped: \$ \\ \> \[ \{
--------------
@@ -302,83 +302,83 @@ Definition Lists
Tight using spaces:
apple
- red fruit
+ red fruit
orange
- orange fruit
+ orange fruit
banana
- yellow fruit
+ yellow fruit
Tight using tabs:
apple
- red fruit
+ red fruit
orange
- orange fruit
+ orange fruit
banana
- yellow fruit
+ yellow fruit
Loose:
apple
- red fruit
+ red fruit
orange
- orange fruit
+ orange fruit
banana
- yellow fruit
+ yellow fruit
Multiple blocks with italics:
*apple*
- red fruit
+ red fruit
- contains seeds, crisp, pleasant to taste
+ contains seeds, crisp, pleasant to taste
*orange*
- orange fruit
+ orange fruit
- ::
+ ::
- { orange code block }
+ { orange code block }
- ..
+ ..
- orange block quote
+ orange block quote
Multiple definitions, tight:
apple
- red fruit
- computer
+ red fruit
+ computer
orange
- orange fruit
- bank
+ orange fruit
+ bank
Multiple definitions, loose:
apple
- red fruit
+ red fruit
- computer
+ computer
orange
- orange fruit
+ orange fruit
- bank
+ bank
Blank line after term, indented marker, alternate markers:
apple
- red fruit
+ red fruit
- computer
+ computer
orange
- orange fruit
+ orange fruit
- 1. sublist
- 2. sublist
+ 1. sublist
+ 2. sublist
HTML Blocks
===========
@@ -491,15 +491,15 @@ This should be a code block, though:
::
- <div>
- foo
- </div>
+ <div>
+ foo
+ </div>
As should this:
::
- <div>foo</div>
+ <div>foo</div>
Now, nested:
@@ -554,7 +554,7 @@ Code block:
::
- <!-- Comment -->
+ <!-- Comment -->
Just plain comment, with trailing spaces on the line:
@@ -566,7 +566,7 @@ Code:
::
- <hr />
+ <hr />
Hr’s:
@@ -793,7 +793,7 @@ This should [not][] be a link.
::
- [not]: /url
+ [not]: /url
Foo `bar </url/>`__.
@@ -822,13 +822,13 @@ With an ampersand: http://example.com/?foo=1&bar=2
An e-mail address: nobody@nowhere.net
- Blockquoted: http://example.com/
+ Blockquoted: http://example.com/
Auto-links should not occur here: ``<http://example.com/>``
::
- or here: <http://example.com/>
+ or here: <http://example.com/>
--------------
@@ -853,7 +853,7 @@ Here is a footnote reference, [1]_ and another. [2]_ This should *not* be a
footnote reference, because it contains a space.[^my note] Here is an inline
note. [3]_
- Notes can go in quotes. [4]_
+ Notes can go in quotes. [4]_
1. And in list items. [5]_
@@ -871,7 +871,7 @@ This paragraph should not be part of the note, as it is not indented.
::
- { <code> }
+ { <code> }
If you want, you can indent every line, but you can also be lazy and just
indent the first line of each block.