Skip to content

Commit aabc645

Browse files
committed
Testing rst export
1 parent b5418a3 commit aabc645

File tree

4 files changed

+139
-28
lines changed

4 files changed

+139
-28
lines changed

examples/document.md

Lines changed: 59 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,88 @@
11
## Document
2-
A model for documents
3-
#### Allowed parameters
4-
<table><tr><td><b>title</b></td><td>str</td><td><i>Document title</i></td></tr>
5-
6-
<tr><td><b>ISBN</b></td><td>int</td><td><i>International Standard Book Number</i></td></tr>
7-
8-
<tr><td><b>id</b></td><td>str</td><td><i>Unique ID of element</i></td></tr>
92

10-
<tr><td><b>notes</b></td><td>str</td><td><i>Human readable notes</i></td></tr>
3+
A model for documents
114

5+
### Allowed parameters
6+
<table>
7+
<tr>
8+
<td><b>title</b></td>
9+
<td>str</td>
10+
<td><i>Document title</i></td>
11+
</tr>
12+
13+
<tr>
14+
<td><b>ISBN</b></td>
15+
<td>int</td>
16+
<td><i>International Standard Book Number</i></td>
17+
</tr>
18+
19+
<tr>
20+
<td><b>id</b></td>
21+
<td>str</td>
22+
<td><i>Unique ID of element</i></td>
23+
</tr>
24+
25+
<tr>
26+
<td><b>notes</b></td>
27+
<td>str</td>
28+
<td><i>Human readable notes</i></td>
29+
</tr>
1230

1331
</table>
1432

1533
#### Allowed children
16-
<table><tr><td><b>sections</b></td><td><a href="#section">Section</a></td><td><i>The sections of the document</i></td></tr>
1734

35+
<table>
36+
<tr>
37+
<td><b>sections</b></td>
38+
<td><a href="#section">Section</a></td>
39+
<td><i>The sections of the document</i></td>
40+
</tr>
1841

1942
</table>
2043

2144
## Section
45+
2246
A model of a section of the document
23-
#### Allowed parameters
24-
<table><tr><td><b>id</b></td><td>str</td><td><i>Unique ID of element</i></td></tr>
2547

26-
<tr><td><b>notes</b></td><td>str</td><td><i>Human readable notes</i></td></tr>
48+
### Allowed parameters
49+
<table>
50+
<tr>
51+
<td><b>id</b></td>
52+
<td>str</td>
53+
<td><i>Unique ID of element</i></td>
54+
</tr>
2755

56+
<tr>
57+
<td><b>notes</b></td>
58+
<td>str</td>
59+
<td><i>Human readable notes</i></td>
60+
</tr>
2861

2962
</table>
3063

3164
#### Allowed children
32-
<table><tr><td><b>paragraphs</b></td><td><a href="#paragraph">Paragraph</a></td><td><i>The paragraphs</i></td></tr>
3365

66+
<table>
67+
<tr>
68+
<td><b>paragraphs</b></td>
69+
<td><a href="#paragraph">Paragraph</a></td>
70+
<td><i>The paragraphs</i></td>
71+
</tr>
3472

3573
</table>
3674

3775
## Paragraph
76+
3877
A model of a paragraph
39-
#### Allowed parameters
40-
<table><tr><td><b>contents</b></td><td>str</td><td><i>Paragraph contents</i></td></tr>
4178

79+
### Allowed parameters
80+
<table>
81+
<tr>
82+
<td><b>contents</b></td>
83+
<td>str</td>
84+
<td><i>Paragraph contents</i></td>
85+
</tr>
4286

4387
</table>
4488

examples/document.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,8 @@ def __init__(self, **kwargs):
6060

6161
with open("document.md", "w") as d:
6262
d.write(doc_md)
63+
64+
doc_rst = doc.generate_documentation(format="rst")
65+
66+
with open("document.rst", "w") as d:
67+
d.write(doc_rst)

examples/document.rst

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
========
2+
Document
3+
========
4+
A model for documents
5+
6+
Allowed parameters
7+
==================
8+
9+
============ === =====================
10+
<b>title</b> str <i>Document title</i>
11+
============ === =====================
12+
=========== === =========================================
13+
<b>ISBN</b> int <i>International Standard Book Number</i>
14+
=========== === =========================================
15+
========= === ===========================
16+
<b>id</b> str <i>Unique ID of element</i>
17+
========= === ===========================
18+
============ === ===========================
19+
<b>notes</b> str <i>Human readable notes</i>
20+
============ === ===========================
21+
</table>
22+
23+
Allowed children
24+
================
25+
26+
<table>
27+
</table>
28+

modelspec/BaseTypes.py

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
verbose = False
77

88
MARKDOWN_FORMAT = "markdown"
9+
RST_FORMAT = "rst"
10+
911
DICT_FORMAT = "dict"
1012

1113

@@ -369,7 +371,7 @@ def generate_documentation(self, format=MARKDOWN_FORMAT):
369371
Work in progress...
370372
"""
371373

372-
if format == MARKDOWN_FORMAT:
374+
if format == MARKDOWN_FORMAT or format == RST_FORMAT:
373375
doc_string = ""
374376
if format == DICT_FORMAT:
375377
doc_dict = {}
@@ -392,18 +394,27 @@ def insert_links(text):
392394
return text2
393395

394396
name = self.__class__.__name__
397+
395398
if format == MARKDOWN_FORMAT:
396-
doc_string += "## %s\n" % name
399+
doc_string += "## %s\n\n" % name
397400
if self._definition is not None:
398-
doc_string += "%s\n" % insert_links(self._definition)
399-
if format == DICT_FORMAT:
401+
doc_string += "%s\n\n" % insert_links(self._definition)
402+
elif format == RST_FORMAT:
403+
doc_string += "%s\n%s\n%s\n" % ("="*len(name),name,"="*len(name))
404+
if self._definition is not None:
405+
doc_string += "%s\n\n" % insert_links(self._definition)
406+
407+
elif format == DICT_FORMAT:
400408
doc_dict[name] = {}
401409
if self._definition is not None:
402410
doc_dict[name]["definition"] = self._definition
403411

404412
if len(self.allowed_fields) > 0:
405413
if format == MARKDOWN_FORMAT:
406-
doc_string += "#### Allowed parameters\n<table>"
414+
doc_string += "### Allowed parameters\n<table>\n"
415+
if format == RST_FORMAT:
416+
ap = "Allowed parameters"
417+
doc_string += "%s\n%s\n\n" % (ap,"="*len(ap))
407418
if format == DICT_FORMAT:
408419
doc_dict[name]["allowed_parameters"] = {}
409420

@@ -424,28 +435,47 @@ def insert_links(text):
424435
] = self.allowed_fields[f][0]
425436

426437
if format == MARKDOWN_FORMAT:
427-
doc_string += "<tr><td><b>%s</b></td><td>%s</td>" % (
438+
doc_string += " <tr>\n <td><b>%s</b></td>\n <td>%s</td>" % (
428439
f,
429440
'<a href="#%s">%s</a>' % (type_.lower(), type_)
430441
if referencable
431442
else type_,
432443
)
433-
doc_string += "<td><i>%s</i></td></tr>\n\n" % (
444+
doc_string += "\n <td><i>%s</i></td>\n </tr>\n\n" % (
445+
insert_links(self.allowed_fields[f][0])
446+
)
447+
if format == RST_FORMAT:
448+
n = "<b>%s</b>" % f
449+
t = "%s" % (
450+
'<a href="#%s">%s</a>' % (type_.lower(), type_)
451+
if referencable
452+
else type_,
453+
)
454+
d = "<i>%s</i>" % (
434455
insert_links(self.allowed_fields[f][0])
435456
)
436457

458+
doc_string += "%s %s %s\n"%("="*len(n),"="*len(t),"="*len(d))
459+
doc_string += "%s %s %s\n"%(n,t,d)
460+
doc_string += "%s %s %s\n"%("="*len(n),"="*len(t),"="*len(d))
461+
437462
if referencable:
438463
inst = self.allowed_fields[f][1]()
439464
inst.id = ""
440465
referenced.append(inst)
441466

442467
if len(self.allowed_fields) > 0:
443468
if format == MARKDOWN_FORMAT:
444-
doc_string += "\n</table>\n\n"
469+
doc_string += "</table>\n\n"
470+
if format == RST_FORMAT:
471+
doc_string += "</table>\n\n"
445472

446473
if len(self.allowed_children) > 0:
447474
if format == MARKDOWN_FORMAT:
448-
doc_string += "#### Allowed children\n<table>"
475+
doc_string += "#### Allowed children\n\n<table>\n"
476+
if format == RST_FORMAT:
477+
ap = "Allowed children"
478+
doc_string += "%s\n%s\n\n<table>\n" % (ap,"="*len(ap))
449479
if format == DICT_FORMAT:
450480
doc_dict[name]["allowed_children"] = {}
451481

@@ -466,13 +496,13 @@ def insert_links(text):
466496
] = self.allowed_children[c][0]
467497

468498
if format == MARKDOWN_FORMAT:
469-
doc_string += "<tr><td><b>%s</b></td><td>%s</td>" % (
499+
doc_string += " <tr>\n <td><b>%s</b></td>\n <td>%s</td>" % (
470500
c,
471501
'<a href="#%s">%s</a>' % (type_.lower(), type_)
472502
if referencable
473503
else type_,
474504
)
475-
doc_string += "<td><i>%s</i></td></tr>\n\n" % (
505+
doc_string += "\n <td><i>%s</i></td>\n </tr>\n\n" % (
476506
insert_links(self.allowed_children[c][0])
477507
)
478508

@@ -482,7 +512,11 @@ def insert_links(text):
482512

483513
if len(self.allowed_children) > 0:
484514
if format == MARKDOWN_FORMAT:
485-
doc_string += "\n</table>\n\n"
515+
doc_string += "</table>\n\n"
516+
517+
if len(self.allowed_children) > 0:
518+
if format == RST_FORMAT:
519+
doc_string += "</table>\n\n"
486520

487521
for r in referenced:
488522
if format == MARKDOWN_FORMAT:
@@ -491,7 +525,7 @@ def insert_links(text):
491525
pass
492526
doc_dict.update(r.generate_documentation(format=format))
493527

494-
if format == MARKDOWN_FORMAT:
528+
if format == MARKDOWN_FORMAT or format== RST_FORMAT:
495529
return doc_string
496530
if format == DICT_FORMAT:
497531
return doc_dict

0 commit comments

Comments
 (0)