test-minirst.py
260 lines
| 5.1 KiB
| text/x-python
|
PythonLexer
/ tests / test-minirst.py
Robert Stanca
|
r28752 | from __future__ import absolute_import, print_function | ||
Yuya Nishihara
|
r28840 | import pprint | ||
Robert Stanca
|
r28751 | from mercurial import ( | ||
minirst, | ||||
) | ||||
Martin Geisler
|
r9156 | |||
Matt Mackall
|
r15263 | def debugformat(text, form, **kwargs): | ||
if form == 'html': | ||||
Robert Stanca
|
r28752 | print("html format:") | ||
Matt Mackall
|
r15263 | out = minirst.format(text, style=form, **kwargs) | ||
else: | ||||
Robert Stanca
|
r28752 | print("%d column format:" % form) | ||
Matt Mackall
|
r15263 | out = minirst.format(text, width=form, **kwargs) | ||
Robert Stanca
|
r28752 | print("-" * 70) | ||
Matt Mackall
|
r15263 | if type(out) == tuple: | ||
Robert Stanca
|
r28752 | print(out[0][:-1]) | ||
print("-" * 70) | ||||
Yuya Nishihara
|
r28840 | pprint.pprint(out[1]) | ||
Martin Geisler
|
r10444 | else: | ||
Robert Stanca
|
r28752 | print(out[:-1]) | ||
print("-" * 70) | ||||
print() | ||||
Martin Geisler
|
r9156 | |||
Matt Mackall
|
r15263 | def debugformats(title, text, **kwargs): | ||
Robert Stanca
|
r28752 | print("== %s ==" % title) | ||
Matt Mackall
|
r15263 | debugformat(text, 60, **kwargs) | ||
debugformat(text, 30, **kwargs) | ||||
debugformat(text, 'html', **kwargs) | ||||
Martin Geisler
|
r9156 | paragraphs = """ | ||
This is some text in the first paragraph. | ||||
Martin Geisler
|
r9736 | A small indented paragraph. | ||
It is followed by some lines | ||||
containing random whitespace. | ||||
Matt Mackall
|
r10289 | \n \n \nThe third and final paragraph. | ||
Martin Geisler
|
r9156 | """ | ||
Matt Mackall
|
r15263 | debugformats('paragraphs', paragraphs) | ||
Martin Geisler
|
r9156 | |||
definitions = """ | ||||
A Term | ||||
Definition. The indented | ||||
lines make up the definition. | ||||
Another Term | ||||
Another definition. The final line in the | ||||
definition determines the indentation, so | ||||
this will be indented with four spaces. | ||||
A Nested/Indented Term | ||||
Definition. | ||||
""" | ||||
Matt Mackall
|
r15263 | debugformats('definitions', definitions) | ||
Martin Geisler
|
r9156 | |||
literals = r""" | ||||
The fully minimized form is the most | ||||
convenient form:: | ||||
Hello | ||||
literal | ||||
world | ||||
In the partially minimized form a paragraph | ||||
simply ends with space-double-colon. :: | ||||
//////////////////////////////////////// | ||||
long un-wrapped line in a literal block | ||||
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ | ||||
:: | ||||
This literal block is started with '::', | ||||
the so-called expanded form. The paragraph | ||||
with '::' disappears in the final output. | ||||
""" | ||||
Matt Mackall
|
r15263 | debugformats('literals', literals) | ||
Martin Geisler
|
r9156 | |||
lists = """ | ||||
- This is the first list item. | ||||
Second paragraph in the first list item. | ||||
- List items need not be separated | ||||
by a blank line. | ||||
- And will be rendered without | ||||
one in any case. | ||||
We can have indented lists: | ||||
- This is an indented list item | ||||
- Another indented list item:: | ||||
- A literal block in the middle | ||||
of an indented list. | ||||
(The above is not a list item since we are in the literal block.) | ||||
:: | ||||
Martin Geisler
|
r9291 | Literal block with no indentation (apart from | ||
the two spaces added to all literal blocks). | ||||
Martin Geisler
|
r9739 | |||
1. This is an enumerated list (first item). | ||||
2. Continuing with the second item. | ||||
(1) foo | ||||
(2) bar | ||||
1) Another | ||||
2) List | ||||
Martin Geisler
|
r10447 | |||
Line blocks are also a form of list: | ||||
| This is the first line. | ||||
The line continues here. | ||||
| This is the second line. | ||||
Martin Geisler
|
r9156 | """ | ||
Matt Mackall
|
r15263 | debugformats('lists', lists) | ||
Martin Geisler
|
r9156 | |||
options = """ | ||||
There is support for simple option lists, | ||||
but only with long options: | ||||
Erik Zielke
|
r13011 | -X, --exclude filter an option with a short and long option with an argument | ||
-I, --include an option with both a short option and a long option | ||||
--all Output all. | ||||
--both Output both (this description is | ||||
quite long). | ||||
--long Output all day long. | ||||
Martin Geisler
|
r9156 | |||
Erik Zielke
|
r13011 | --par This option has two paragraphs in its description. | ||
This is the first. | ||||
Martin Geisler
|
r9156 | |||
Erik Zielke
|
r13011 | This is the second. Blank lines may be omitted between | ||
options (as above) or left in (as here). | ||||
Martin Geisler
|
r9156 | |||
The next paragraph looks like an option list, but lacks the two-space | ||||
marker after the option. It is treated as a normal paragraph: | ||||
--foo bar baz | ||||
""" | ||||
Matt Mackall
|
r15263 | debugformats('options', options) | ||
Martin Geisler
|
r9293 | |||
fields = """ | ||||
Martin Geisler
|
r10065 | :a: First item. | ||
:ab: Second item. Indentation and wrapping | ||||
is handled automatically. | ||||
Martin Geisler
|
r9293 | |||
Martin Geisler
|
r10065 | Next list: | ||
:small: The larger key below triggers full indentation here. | ||||
:much too large: This key is big enough to get its own line. | ||||
Martin Geisler
|
r9293 | """ | ||
Matt Mackall
|
r15263 | debugformats('fields', fields) | ||
Martin Geisler
|
r10443 | |||
containers = """ | ||||
Normal output. | ||||
.. container:: debug | ||||
Initial debug output. | ||||
.. container:: verbose | ||||
Verbose output. | ||||
.. container:: debug | ||||
Debug output. | ||||
""" | ||||
Matt Mackall
|
r15263 | debugformats('containers (normal)', containers) | ||
debugformats('containers (verbose)', containers, keep=['verbose']) | ||||
debugformats('containers (debug)', containers, keep=['debug']) | ||||
debugformats('containers (verbose debug)', containers, | ||||
Martin Geisler
|
r10443 | keep=['verbose', 'debug']) | ||
Martin Geisler
|
r10972 | |||
roles = """Please see :hg:`add`.""" | ||||
Matt Mackall
|
r15263 | debugformats('roles', roles) | ||
Martin Geisler
|
r10977 | |||
sections = """ | ||||
Martin Geisler
|
r10984 | Title | ||
===== | ||||
Section | ||||
------- | ||||
Subsection | ||||
'''''''''' | ||||
Martin Geisler
|
r10983 | |||
Markup: ``foo`` and :hg:`help` | ||||
------------------------------ | ||||
Martin Geisler
|
r10977 | """ | ||
Matt Mackall
|
r15263 | debugformats('sections', sections) | ||
Erik Zielke
|
r12388 | |||
admonitions = """ | ||||
.. note:: | ||||
Simon Heimberg
|
r19996 | |||
Erik Zielke
|
r12388 | This is a note | ||
- Bullet 1 | ||||
- Bullet 2 | ||||
.. warning:: This is a warning Second | ||||
input line of warning | ||||
.. danger:: | ||||
This is danger | ||||
""" | ||||
Matt Mackall
|
r15263 | debugformats('admonitions', admonitions) | ||
Martin Geisler
|
r12819 | |||
comments = """ | ||||
Some text. | ||||
.. A comment | ||||
.. An indented comment | ||||
Some indented text. | ||||
Erik Zielke
|
r13009 | |||
.. | ||||
Empty comment above | ||||
Martin Geisler
|
r12819 | """ | ||
Matt Mackall
|
r15263 | debugformats('comments', comments) | ||
Matt Mackall
|
r15037 | |||
Matt Mackall
|
r15039 | |||
data = [['a', 'b', 'c'], | ||||
['1', '2', '3'], | ||||
['foo', 'bar', 'baz this list is very very very long man']] | ||||
Olav Reinert
|
r16815 | rst = minirst.maketable(data, 2, True) | ||
table = ''.join(rst) | ||||
Matt Mackall
|
r15039 | |||
Robert Stanca
|
r28752 | print(table) | ||
Matt Mackall
|
r15037 | |||
Matt Mackall
|
r15263 | debugformats('table', table) | ||
Simon Heimberg
|
r20654 | |||
data = [['s', 'long', 'line\ngoes on here'], | ||||
['', 'xy', 'tried to fix here\n by indenting']] | ||||
rst = minirst.maketable(data, 1, False) | ||||
table = ''.join(rst) | ||||
Robert Stanca
|
r28752 | print(table) | ||
Simon Heimberg
|
r20654 | |||
debugformats('table+nl', table) | ||||