Files
clear-linux-documentation/source/scripts/_python/utilities/code-blocks.py
T

34 lines
972 B
Python

'''
Usage: python code-blocks.py path/to/file.rst
Default output is to stdout
Parses bash code blocks out of rst file for instruction testing.
'''
import sys
def code_blocks(filename):
with open(filename, 'r') as fd:
c_indent = ''
in_section = []
for line in fd:
indent = line[:len(line) - len(line.lstrip())]
if 'code-block:: bash' in line:
in_section = [line.strip()]
c_indent = ''
elif in_section:
if not c_indent and line.strip():
c_indent = indent
if not (len(indent) >= len(c_indent)) and line.strip():
yield in_section[2:]
in_section = []
else:
in_section.append(line[len(c_indent):].rstrip())
def main():
for code_block in code_blocks(sys.argv[1]):
print('\n'.join(code_block) + '\n')
if __name__ == '__main__':
main()