code check

This commit is contained in:
Trilarion
2020-08-11 14:01:21 +02:00
parent 1ca7c6c12d
commit 30a252a43f
16 changed files with 285 additions and 198 deletions

View File

@ -15,10 +15,10 @@ class ListingTransformer(lark.Transformer):
raise lark.Discard
def property(self, x):
return (x[0].value.lower(), x[1].value)
return x[0].value.lower(), x[1].value
def name(self, x):
return ('name', x[0].value)
return 'name', x[0].value
def entry(self, x):
d = {}
@ -32,8 +32,8 @@ class ListingTransformer(lark.Transformer):
def start(self, x):
return x
# transformer
# transformer
class EntryTransformer(lark.Transformer):
def start(self, x):
@ -43,22 +43,22 @@ class EntryTransformer(lark.Transformer):
return d
def title(self, x):
return ('title', x[0].value)
return 'title', x[0].value
def description(self, x):
return ('description', x[0].value)
return 'description', x[0].value
def property(self, x):
return (str.casefold(x[0].value), x[1].value)
return str.casefold(x[0].value), x[1].value
def note(self, x):
return ('note', x[0].value)
return 'note', x[0].value
def building(self, x):
d = {}
for key, value in x:
d[key] = value
return ('building', d)
return 'building', d
essential_fields = ('Home', 'State', 'Keywords', 'Code repository', 'Code language', 'Code license')
@ -223,7 +223,7 @@ def parse_entry(content):
v = [x for x in v if x]
# if entry is of structure <..> remove <>
v = [x[1:-1] if x[0] is '<' and x[-1] is '>' else x for x in v]
v = [x[1:-1] if x[0] == '<' and x[-1] == '>' else x for x in v]
# empty fields will not be stored
if not v:
@ -364,7 +364,7 @@ def extract_links():
"""
# regex for finding urls (can be in <> or in ]() or after a whitespace
regex = re.compile(r"[\s\n]<(http.+?)>|\]\((http.+?)\)|[\s\n](http[^\s\n,]+?)[\s\n,]")
regex = re.compile(r"[\s\n]<(http.+?)>|]\((http.+?)\)|[\s\n](http[^\s\n,]+?)[\s\n,]")
# iterate over all entries
urls = set()
@ -409,7 +409,7 @@ def read_developer_info():
developer_file = os.path.join(c.root_path, 'developer.md')
grammar_file = os.path.join(c.code_path, 'grammar_listing.lark')
transformer = ListingTransformer()
developers = read_and_parse(developer_file, grammar_file, transformer)
developers = read_and_parse(developer_file, grammar_file, transformer)
# now transform a bit more
for index, dev in enumerate(developers):
# check for valid keys
@ -430,7 +430,7 @@ def read_developer_info():
# check for duplicate names entries
names = [dev['name'] for dev in developers]
duplicate_names = (name for name in names if names.count(name) > 1)
duplicate_names = set(duplicate_names) # to avoid duplicates in duplicate_names
duplicate_names = set(duplicate_names) # to avoid duplicates in duplicate_names
if duplicate_names:
print('Warning: duplicate developer names: {}'.format(', '.join(duplicate_names)))
return developers
@ -474,7 +474,6 @@ def write_developer_info(developers):
utils.write_text(developer_file, content)
def read_inspirations_info():
"""
@ -491,7 +490,7 @@ def read_inspirations_info():
if field not in valid_inspiration_fields:
raise RuntimeError('Unknown field "{}" for inspiration: {}.'.format(field, inspiration['name']))
# split lists
for field in ('inspired entries', ):
for field in ('inspired entries',):
if field in inspiration:
content = inspiration[field]
content = content.split(',')
@ -500,7 +499,7 @@ def read_inspirations_info():
# check for duplicate names entries
names = [inspiration['name'] for inspiration in inspirations]
duplicate_names = (name for name in names if names.count(name) > 1)
duplicate_names = set(duplicate_names) # to avoid duplicates in duplicate_names
duplicate_names = set(duplicate_names) # to avoid duplicates in duplicate_names
if duplicate_names:
print('Warning: duplicate inspiration names: {}'.format(', '.join(duplicate_names)))
return inspirations
@ -527,7 +526,8 @@ def write_inspirations_info(inspirations):
content += '## {} ({})\n\n'.format(inspiration['name'], len(inspiration['inspired entries']))
# games
content += '- Inspired entries: {}\n'.format(', '.join(sorted(inspiration['inspired entries'], key=str.casefold)))
content += '- Inspired entries: {}\n'.format(
', '.join(sorted(inspiration['inspired entries'], key=str.casefold)))
# all the remaining in alphabetical order
for field in sorted(inspiration.keys()):
@ -545,7 +545,6 @@ def write_inspirations_info(inspirations):
utils.write_text(inspirations_file, content)
def compare_entries_developers(entries, developers):
"""
Cross checks the game entries lists and the developers lists.
@ -580,11 +579,11 @@ def compare_entries_developers(entries, developers):
games2 = set(devs2[dev])
delta = games1 - games2
if delta:
print('Warning: dev "{}" has games in entries ({}) that are not present in developers'.format(dev, ', '.join(delta)))
print('Warning: dev "{}" has games in entries ({}) that are not present in developers'.format(dev,
', '.join(
delta)))
delta = games2 - games1
if delta:
print('Warning: dev "{}" has games in developers ({}) that are not present in entries'.format(dev, ', '.join(delta)))
print('Warning: dev "{}" has games in developers ({}) that are not present in entries'.format(dev,
', '.join(
delta)))