tests/test-minirst.py
author Gregory Szorc <gregory.szorc@gmail.com>
Tue, 31 Mar 2020 19:07:36 -0700
changeset 44638 af739894a4c1
parent 43076 2372284d9457
child 46385 aaff3bc75306
permissions -rw-r--r--
hgcli: add stub PyOxidizer project Using commit c772a1379c3026314eda1c8ea244b86c0658951d of PyOxidizer, I ran `pyoxidizer init-rust-project hgcli` to create a stub Rust project. The only modifications I made from what that command produced are: * Update location of pyembed crate to PyOxidizer's Git repository. * Removed some trailing whitespace from pyoxidizer.bzl * Added auto-generated Cargo.lock file Subsequent commits will modify the stub project to Mercurial's needs. Differential Revision: https://phab.mercurial-scm.org/D8350
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28752
6b2f9a4e2f97 py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28751
diff changeset
     1
from __future__ import absolute_import, print_function
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
     2
from mercurial import minirst
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
     3
from mercurial.utils import stringutil
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
     4
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     5
15263
70d7293c41d6 minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents: 15262
diff changeset
     6
def debugformat(text, form, **kwargs):
39310
a2a5d4ad5276 minirst: make format() simply return a formatted text
Yuya Nishihara <yuya@tcha.org>
parents: 37942
diff changeset
     7
    blocks, pruned = minirst.parse(text, **kwargs)
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
     8
    if form == b'html':
28752
6b2f9a4e2f97 py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28751
diff changeset
     9
        print("html format:")
15263
70d7293c41d6 minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents: 15262
diff changeset
    10
        out = minirst.format(text, style=form, **kwargs)
70d7293c41d6 minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents: 15262
diff changeset
    11
    else:
28752
6b2f9a4e2f97 py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28751
diff changeset
    12
        print("%d column format:" % form)
15263
70d7293c41d6 minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents: 15262
diff changeset
    13
        out = minirst.format(text, width=form, **kwargs)
70d7293c41d6 minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents: 15262
diff changeset
    14
28752
6b2f9a4e2f97 py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28751
diff changeset
    15
    print("-" * 70)
39310
a2a5d4ad5276 minirst: make format() simply return a formatted text
Yuya Nishihara <yuya@tcha.org>
parents: 37942
diff changeset
    16
    print(out[:-1].decode('utf8'))
a2a5d4ad5276 minirst: make format() simply return a formatted text
Yuya Nishihara <yuya@tcha.org>
parents: 37942
diff changeset
    17
    if kwargs.get('keep'):
28752
6b2f9a4e2f97 py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28751
diff changeset
    18
        print("-" * 70)
39310
a2a5d4ad5276 minirst: make format() simply return a formatted text
Yuya Nishihara <yuya@tcha.org>
parents: 37942
diff changeset
    19
        print(stringutil.pprint(pruned).decode('utf8'))
28752
6b2f9a4e2f97 py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28751
diff changeset
    20
    print("-" * 70)
6b2f9a4e2f97 py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28751
diff changeset
    21
    print()
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    22
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
    23
15263
70d7293c41d6 minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents: 15262
diff changeset
    24
def debugformats(title, text, **kwargs):
28752
6b2f9a4e2f97 py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28751
diff changeset
    25
    print("== %s ==" % title)
15263
70d7293c41d6 minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents: 15262
diff changeset
    26
    debugformat(text, 60, **kwargs)
70d7293c41d6 minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents: 15262
diff changeset
    27
    debugformat(text, 30, **kwargs)
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
    28
    debugformat(text, b'html', **kwargs)
15263
70d7293c41d6 minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents: 15262
diff changeset
    29
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
    30
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
    31
paragraphs = b"""
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    32
This is some text in the first paragraph.
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    33
9736
26d3ade60fa6 test-minirst: don't test on invalid reST input
Martin Geisler <mg@lazybytes.net>
parents: 9293
diff changeset
    34
  A small indented paragraph.
26d3ade60fa6 test-minirst: don't test on invalid reST input
Martin Geisler <mg@lazybytes.net>
parents: 9293
diff changeset
    35
  It is followed by some lines
26d3ade60fa6 test-minirst: don't test on invalid reST input
Martin Geisler <mg@lazybytes.net>
parents: 9293
diff changeset
    36
  containing random whitespace.
10289
987df17f85bb test-minirst: hide trailing whitespace from check-code
Matt Mackall <mpm@selenic.com>
parents: 10065
diff changeset
    37
 \n  \n   \nThe third and final paragraph.
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    38
"""
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    39
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
    40
debugformats('paragraphs', paragraphs)
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    41
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
    42
definitions = b"""
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    43
A Term
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    44
  Definition. The indented
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    45
  lines make up the definition.
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    46
Another Term
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    47
  Another definition. The final line in the
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    48
   definition determines the indentation, so
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    49
    this will be indented with four spaces.
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    50
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    51
  A Nested/Indented Term
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    52
    Definition.
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    53
"""
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    54
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
    55
debugformats('definitions', definitions)
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    56
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
    57
literals = br"""
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    58
The fully minimized form is the most
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    59
convenient form::
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    60
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    61
  Hello
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    62
    literal
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    63
      world
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    64
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    65
In the partially minimized form a paragraph
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    66
simply ends with space-double-colon. ::
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    67
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    68
  ////////////////////////////////////////
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    69
  long un-wrapped line in a literal block
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    70
  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    71
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    72
::
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    73
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    74
  This literal block is started with '::',
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    75
    the so-called expanded form. The paragraph
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    76
      with '::' disappears in the final output.
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    77
"""
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    78
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
    79
debugformats('literals', literals)
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    80
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
    81
lists = b"""
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    82
- This is the first list item.
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    83
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    84
  Second paragraph in the first list item.
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    85
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    86
- List items need not be separated
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    87
  by a blank line.
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    88
- And will be rendered without
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    89
  one in any case.
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    90
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    91
We can have indented lists:
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    92
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    93
  - This is an indented list item
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    94
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    95
  - Another indented list item::
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    96
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    97
      - A literal block in the middle
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    98
            of an indented list.
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    99
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   100
      (The above is not a list item since we are in the literal block.)
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   101
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   102
::
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   103
9291
cd5b6a11b607 minirst: indent literal blocks with two spaces
Martin Geisler <mg@lazybytes.net>
parents: 9156
diff changeset
   104
  Literal block with no indentation (apart from
cd5b6a11b607 minirst: indent literal blocks with two spaces
Martin Geisler <mg@lazybytes.net>
parents: 9156
diff changeset
   105
  the two spaces added to all literal blocks).
9739
75cff8f12910 minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents: 9736
diff changeset
   106
75cff8f12910 minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents: 9736
diff changeset
   107
1. This is an enumerated list (first item).
75cff8f12910 minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents: 9736
diff changeset
   108
2. Continuing with the second item.
75cff8f12910 minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents: 9736
diff changeset
   109
75cff8f12910 minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents: 9736
diff changeset
   110
(1) foo
75cff8f12910 minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents: 9736
diff changeset
   111
(2) bar
75cff8f12910 minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents: 9736
diff changeset
   112
75cff8f12910 minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents: 9736
diff changeset
   113
1) Another
75cff8f12910 minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents: 9736
diff changeset
   114
2) List
10447
e957cc7cbd14 minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents: 10444
diff changeset
   115
e957cc7cbd14 minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents: 10444
diff changeset
   116
Line blocks are also a form of list:
e957cc7cbd14 minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents: 10444
diff changeset
   117
e957cc7cbd14 minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents: 10444
diff changeset
   118
| This is the first line.
e957cc7cbd14 minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents: 10444
diff changeset
   119
  The line continues here.
e957cc7cbd14 minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents: 10444
diff changeset
   120
| This is the second line.
31130
6582b3716ae0 minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents: 28840
diff changeset
   121
6582b3716ae0 minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents: 28840
diff changeset
   122
Bullet lists are also detected:
6582b3716ae0 minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents: 28840
diff changeset
   123
6582b3716ae0 minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents: 28840
diff changeset
   124
* This is the first bullet
6582b3716ae0 minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents: 28840
diff changeset
   125
* This is the second bullet
6582b3716ae0 minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents: 28840
diff changeset
   126
  It has 2 lines
6582b3716ae0 minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents: 28840
diff changeset
   127
* This is the third bullet
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   128
"""
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   129
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   130
debugformats('lists', lists)
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   131
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
   132
options = b"""
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   133
There is support for simple option lists,
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   134
but only with long options:
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   135
13011
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   136
-X, --exclude  filter  an option with a short and long option with an argument
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   137
-I, --include          an option with both a short option and a long option
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   138
--all                  Output all.
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   139
--both                 Output both (this description is
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   140
                       quite long).
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   141
--long                 Output all day long.
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   142
13011
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   143
--par                 This option has two paragraphs in its description.
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   144
                      This is the first.
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   145
13011
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   146
                      This is the second.  Blank lines may be omitted between
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   147
                      options (as above) or left in (as here).
4936a04b6792 minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents: 13009
diff changeset
   148
9156
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   149
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   150
The next paragraph looks like an option list, but lacks the two-space
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   151
marker after the option. It is treated as a normal paragraph:
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   152
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   153
--foo bar baz
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   154
"""
c9c7e8cdac9c minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   155
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   156
debugformats('options', options)
9293
e48a48b754d3 minirst: parse field lists
Martin Geisler <mg@lazybytes.net>
parents: 9291
diff changeset
   157
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
   158
fields = b"""
10065
a1ae0ed78d1a minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents: 9739
diff changeset
   159
:a: First item.
a1ae0ed78d1a minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents: 9739
diff changeset
   160
:ab: Second item. Indentation and wrapping
a1ae0ed78d1a minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents: 9739
diff changeset
   161
     is handled automatically.
9293
e48a48b754d3 minirst: parse field lists
Martin Geisler <mg@lazybytes.net>
parents: 9291
diff changeset
   162
10065
a1ae0ed78d1a minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents: 9739
diff changeset
   163
Next list:
a1ae0ed78d1a minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents: 9739
diff changeset
   164
a1ae0ed78d1a minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents: 9739
diff changeset
   165
:small: The larger key below triggers full indentation here.
a1ae0ed78d1a minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents: 9739
diff changeset
   166
:much too large: This key is big enough to get its own line.
9293
e48a48b754d3 minirst: parse field lists
Martin Geisler <mg@lazybytes.net>
parents: 9291
diff changeset
   167
"""
e48a48b754d3 minirst: parse field lists
Martin Geisler <mg@lazybytes.net>
parents: 9291
diff changeset
   168
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   169
debugformats('fields', fields)
10443
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   170
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
   171
containers = b"""
10443
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   172
Normal output.
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   173
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   174
.. container:: debug
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   175
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   176
   Initial debug output.
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   177
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   178
.. container:: verbose
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   179
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   180
   Verbose output.
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   181
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   182
   .. container:: debug
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   183
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   184
      Debug output.
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   185
"""
62d484a81dfe minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents: 10289
diff changeset
   186
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   187
debugformats('containers (normal)', containers)
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   188
debugformats('containers (verbose)', containers, keep=[b'verbose'])
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   189
debugformats('containers (debug)', containers, keep=[b'debug'])
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   190
debugformats(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   191
    'containers (verbose debug)', containers, keep=[b'verbose', b'debug']
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   192
)
10972
0a2c6948f5f4 doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents: 10447
diff changeset
   193
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
   194
roles = b"""Please see :hg:`add`."""
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   195
debugformats('roles', roles)
10977
f4778f942a4e minirst: add test for sections
Martin Geisler <mg@lazybytes.net>
parents: 10972
diff changeset
   196
f4778f942a4e minirst: add test for sections
Martin Geisler <mg@lazybytes.net>
parents: 10972
diff changeset
   197
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
   198
sections = b"""
10984
68b7d2d668ce minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents: 10983
diff changeset
   199
Title
68b7d2d668ce minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents: 10983
diff changeset
   200
=====
68b7d2d668ce minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents: 10983
diff changeset
   201
68b7d2d668ce minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents: 10983
diff changeset
   202
Section
68b7d2d668ce minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents: 10983
diff changeset
   203
-------
68b7d2d668ce minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents: 10983
diff changeset
   204
68b7d2d668ce minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents: 10983
diff changeset
   205
Subsection
68b7d2d668ce minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents: 10983
diff changeset
   206
''''''''''
10983
287a5cdf7743 minirst: correctly format sections containing inline markup
Martin Geisler <mg@lazybytes.net>
parents: 10977
diff changeset
   207
287a5cdf7743 minirst: correctly format sections containing inline markup
Martin Geisler <mg@lazybytes.net>
parents: 10977
diff changeset
   208
Markup: ``foo`` and :hg:`help`
287a5cdf7743 minirst: correctly format sections containing inline markup
Martin Geisler <mg@lazybytes.net>
parents: 10977
diff changeset
   209
------------------------------
10977
f4778f942a4e minirst: add test for sections
Martin Geisler <mg@lazybytes.net>
parents: 10972
diff changeset
   210
"""
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   211
debugformats('sections', sections)
12388
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   212
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   213
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
   214
admonitions = b"""
12388
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   215
.. note::
19996
52b437586435 tests: modify minirst test input to new format
Simon Heimberg <simohe@besonet.ch>
parents: 16815
diff changeset
   216
12388
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   217
   This is a note
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   218
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   219
   - Bullet 1
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   220
   - Bullet 2
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   221
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   222
   .. warning:: This is a warning Second
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   223
      input line of warning
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   224
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   225
.. danger::
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   226
   This is danger
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   227
"""
75f044d4dbf5 minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents: 10984
diff changeset
   228
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   229
debugformats('admonitions', admonitions)
12819
5082e2f3f8e0 minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents: 12388
diff changeset
   230
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
   231
comments = b"""
12819
5082e2f3f8e0 minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents: 12388
diff changeset
   232
Some text.
5082e2f3f8e0 minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents: 12388
diff changeset
   233
5082e2f3f8e0 minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents: 12388
diff changeset
   234
.. A comment
5082e2f3f8e0 minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents: 12388
diff changeset
   235
5082e2f3f8e0 minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents: 12388
diff changeset
   236
   .. An indented comment
5082e2f3f8e0 minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents: 12388
diff changeset
   237
5082e2f3f8e0 minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents: 12388
diff changeset
   238
   Some indented text.
13009
54be08fa4d1d minirst: modified minirst to also recognize empty comments.
Erik Zielke <ez@aragost.com>
parents: 12865
diff changeset
   239
54be08fa4d1d minirst: modified minirst to also recognize empty comments.
Erik Zielke <ez@aragost.com>
parents: 12865
diff changeset
   240
..
54be08fa4d1d minirst: modified minirst to also recognize empty comments.
Erik Zielke <ez@aragost.com>
parents: 12865
diff changeset
   241
54be08fa4d1d minirst: modified minirst to also recognize empty comments.
Erik Zielke <ez@aragost.com>
parents: 12865
diff changeset
   242
Empty comment above
12819
5082e2f3f8e0 minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents: 12388
diff changeset
   243
"""
5082e2f3f8e0 minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents: 12388
diff changeset
   244
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   245
debugformats('comments', comments)
15037
df47381b41d6 minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents: 13011
diff changeset
   246
15039
c981f4a9ea74 minirst: add a helper function to build an RST table from an array
Matt Mackall <mpm@selenic.com>
parents: 15037
diff changeset
   247
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   248
data = [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   249
    [b'a', b'b', b'c'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   250
    [b'1', b'2', b'3'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   251
    [b'foo', b'bar', b'baz this list is very very very long man'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   252
]
15039
c981f4a9ea74 minirst: add a helper function to build an RST table from an array
Matt Mackall <mpm@selenic.com>
parents: 15037
diff changeset
   253
16815
e740746ea557 minirst: generate tables as a list of joined lines
Olav Reinert <seroton10@gmail.com>
parents: 15263
diff changeset
   254
rst = minirst.maketable(data, 2, True)
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
   255
table = b''.join(rst)
15039
c981f4a9ea74 minirst: add a helper function to build an RST table from an array
Matt Mackall <mpm@selenic.com>
parents: 15037
diff changeset
   256
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   257
print(table.decode('utf8'))
15037
df47381b41d6 minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents: 13011
diff changeset
   258
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   259
debugformats('table', table)
20654
af9d9b778550 minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents: 19996
diff changeset
   260
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   261
data = [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   262
    [b's', b'long', b'line\ngoes on here'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   263
    [b'', b'xy', b'tried to fix here\n        by indenting'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39310
diff changeset
   264
]
20654
af9d9b778550 minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents: 19996
diff changeset
   265
af9d9b778550 minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents: 19996
diff changeset
   266
rst = minirst.maketable(data, 1, False)
36706
87b8fc4533ca py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31130
diff changeset
   267
table = b''.join(rst)
20654
af9d9b778550 minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents: 19996
diff changeset
   268
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   269
print(table.decode('utf8'))
20654
af9d9b778550 minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents: 19996
diff changeset
   270
37882
3d24f708f7b6 tests: port test-minirst.py to Python 3
Augie Fackler <augie@google.com>
parents: 37881
diff changeset
   271
debugformats('table+nl', table)