docs/test2rst.py
changeset 2959 ef361938dfa1
parent 2958 1cb715257130
child 2960 1a4f26eec0af
equal deleted inserted replaced
2958:1cb715257130 2959:ef361938dfa1
    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