diff --git a/source/scripts/_python/utilities/code-blocks.py b/source/scripts/_python/utilities/code-blocks.py new file mode 100644 index 00000000..2c805cc7 --- /dev/null +++ b/source/scripts/_python/utilities/code-blocks.py @@ -0,0 +1,40 @@ +''' +Usage: python code-blocks.py path/to/file.rst + +Default output is to stdout + +Parses all code found in blocks listed in blockTypes out of rst file for instruction testing. +''' +import sys + +blockTypes = ["bash","console"] + +def code_blocks(filename): + with open(filename, 'r') as fd: + c_indent = '' + in_section = [] + for line in fd: + blockFound = False + indent = line[:len(line) - len(line.lstrip())] + for blockType in blockTypes: + if 'code-block:: ' + blockType in line: + blockFound = True + if blockFound: + in_section = [line.strip()] + c_indent = '' + blockFound = False + 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()