Newer
Older
Parses API for C++ from Scriptable API documentation.
output_path = 'src/gui/commandcompleterdocumentation.h'
header = '''// Generated by "utils/script_docs_to_cpp.py" from "%s".
template <typename AddDocumentationCallback>
void addDocumentation(AddDocumentationCallback addDocumentation)
{
'''
footer = '}'
# Regex for function/variable/type name in documentation
(?P<function_api>
# function return value
.*?
# function name
(?P<function_name>\w+)
# arguments
\(.*
)
|
# variable name
(?P<variable_name>\w+)
# followed by opening parenthesis
(?P<variable_api>\(.*)
|
# type name
(?P<type_name>\w+)$
)
''', re.VERBOSE)
with open(output_path, mode='w', encoding='utf-8') as output_file:
with open(readme_path, mode='r', encoding='utf-8') as readme_file:
match = None
for line in readme_file:
if line:
if match:
name = match.group('function_name') or match.group('variable_name') or match.group('type_name')
api = match.group('function_api') or match.group('variable_api') or name
output = ' addDocumentation("{}", "{}", "{}");\n'\
output_file.write(output)
match = None
else:
match = re.match(re_title, line)
output_file.write(footer + '\n')