15 |
15 |
16 def rstify(orig, name): |
16 def rstify(orig, name): |
17 newlines = [] |
17 newlines = [] |
18 |
18 |
19 code_block_mode = False |
19 code_block_mode = False |
20 sphinx_directive_mode = False |
|
21 |
20 |
22 for line in orig.splitlines(): |
21 for line in orig.splitlines(): |
23 |
22 |
24 # Emtpy lines doesn't change output |
23 # Emtpy lines doesn't change output |
25 if not line: |
24 if not line: |
26 newlines.append(line) |
25 newlines.append(line) |
27 code_block_mode = False |
|
28 sphinx_directive_mode = False |
|
29 continue |
26 continue |
30 |
27 |
31 # Ignore line |
|
32 if line.endswith('#ignore'): |
|
33 continue |
|
34 |
|
35 # Sphinx directives mode |
|
36 if line.startswith(' .. '): |
|
37 |
|
38 # Insert a empty line to makes sphinx happy |
|
39 newlines.append("") |
|
40 |
|
41 # And unindent the directive |
|
42 line = line[2:] |
|
43 sphinx_directive_mode = True |
|
44 |
|
45 # Code mode |
|
46 codeline = line.startswith(' ') |
28 codeline = line.startswith(' ') |
47 if codeline and not sphinx_directive_mode: |
29 if codeline: |
48 if code_block_mode is False: |
30 if code_block_mode is False: |
49 newlines.extend(['::', '']) |
31 newlines.extend(['::', '']) |
50 |
32 |
51 code_block_mode = True |
33 code_block_mode = True |
|
34 else: |
|
35 code_block_mode = False |
52 |
36 |
53 newlines.append(line) |
37 newlines.append(line) |
54 |
38 |
55 return "\n".join(newlines) |
39 return "\n".join(newlines) |
56 |
40 |