From ff51762b8a9c609e2fce3a79b15ef62a98523f5e Mon Sep 17 00:00:00 2001 From: Nanda Scott Date: Fri, 26 Oct 2018 17:23:50 -0400 Subject: [PATCH] Getting closer with this --- gen_docs.py | 58 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/gen_docs.py b/gen_docs.py index 73489a6..9c8dfb8 100644 --- a/gen_docs.py +++ b/gen_docs.py @@ -3,36 +3,48 @@ import scrython from scrython import * import re -for _class in scrython.__all__: +def format_args(string): + start = '|arg|type|description|\n|:---:|:---:|:---:|' + names = re.findall(r'(\w*\s\([\w,\s]*\):)', string) + +for _class in scrython.__all__: intro = """These docs will likely not be as detailed as the official Scryfall Documentation, and you should reference that for more information. >In the event that a key isn't found or has been changed, you can access the full JSON output with the `scryfallJson` variable (`{}().scryfallJson`). """.format(eval(_class).__name__) - match = list(filter(None, (token.strip() for token in re.findall(r'[^\n]*', eval(_class).__doc__)))) + class_docstring = repr(re.sub(r'\n+', '', eval(_class).__doc__)) # removes newlines - with open('{}.md'.format(eval(_class).__name__), 'w') as f: - f.write('# **class** `{}()`\n'.format(eval(_class).__name__)) - f.write(intro) - for token in match: - # Match section header - if re.findall(r'[A-Z][a-z].*:', token) and ':' in re.findall(r':.*', token): - f.write('\n\n## {}\n\n'.format(token.replace(':', ''))) - if 'Example' in token: - f.write() - else: - f.write('| arg | description |\n|:---:|:---:|') + remove_extra_spaces = re.sub(' +', ' ', class_docstring) - # Match args description - elif re.findall(r'[\w]+\s\(.+\):', token): - if 'Defaults' in token: - f.write(token) - else: - f.write('\n|{}'.format(token)) - else: - f.write('\n|{}|'.format(token)) - # r'[\w]+\s\(.+\):' Matches anything that's a described parameter - # r'[A-Z][a-z](.*)' Matches section titles + args = re.findall(r'(?<=Args:)(.*)(?=Returns:)', remove_extra_spaces)[0] + format_args(args) + + returns = re.findall(r'(?<=Returns:)(.*)(?=Raises:)', remove_extra_spaces)[0] + + raises = re.findall(r'(?<=Raises:)(.*)(?=Examples:)', remove_extra_spaces)[0] + + examples = re.findall(r'(?<=Examples:)(.*)', remove_extra_spaces)[0] + + # match = list(filter(None, (token.strip() for token in re.findall(r'[^\n]*', eval(_class).__doc__)))) + + # with open('{}.md'.format(eval(_class).__name__), 'w') as f: + # f.write('# **class** `{}()`\n'.format(eval(_class).__name__)) + # f.write(intro) + # for token in match: + # if re.findall(r'[A-Z][a-z].*:', token) and ':' in re.findall(r':.*', token): # Match section header + # f.write('\n\n## {}\n\n'.format(token.replace(':', ''))) + # if 'Example' in token: + # f.write(token) + # else: + # f.write('| arg | description |\n|:---:|:---:|') + # elif re.findall(r'[\w]+\s\(.+\):', token): # Match args description + # if 'Defaults' in token: + # f.write(token) + # else: + # f.write('\n|{}|'.format(token)) + # else: + # f.write('\n|{}|'.format(token)) break