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 |
20 |
21 |
21 for line in orig.splitlines(): |
22 for line in orig.splitlines(): |
22 |
23 |
23 # Emtpy lines doesn't change output |
24 # Emtpy lines doesn't change output |
24 if not line: |
25 if not line: |
25 newlines.append(line) |
26 newlines.append(line) |
|
27 code_block_mode = False |
|
28 sphinx_directive_mode = False |
|
29 continue |
26 |
30 |
27 # Ignore line |
31 # Ignore line |
28 if line.endswith('#rest-ignore'): |
32 if line.endswith('#rest-ignore'): |
29 continue |
33 continue |
30 |
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 |
31 codeline = line.startswith(' ') |
46 codeline = line.startswith(' ') |
32 if codeline: |
47 if codeline and not sphinx_directive_mode: |
33 if code_block_mode is False: |
48 if code_block_mode is False: |
34 newlines.extend(['::', '']) |
49 newlines.extend(['::', '']) |
35 |
50 |
36 code_block_mode = True |
51 code_block_mode = True |
37 else: |
|
38 code_block_mode = False |
|
39 |
52 |
40 newlines.append(line) |
53 newlines.append(line) |
41 |
54 |
42 return "\n".join(newlines) |
55 return "\n".join(newlines) |
43 |
56 |