mirror of
https://github.com/clearlinux/clear-linux-documentation.git
synced 2026-04-29 11:38:23 +00:00
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
'''
|
|
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()
|