diff --git a/build/validate_format.py b/build/validate_format.py index 8066c824..545f5e15 100755 --- a/build/validate_format.py +++ b/build/validate_format.py @@ -1,10 +1,12 @@ #!/usr/bin/env python3 import json +import re import string import sys anchor = '###' +min_entries_per_section = 3 auth_keys = ['apiKey', 'OAuth', 'X-Mashape-Key', 'No'] punctuation = ['.', '?', '!'] https_keys = ['Yes', 'No'] @@ -55,9 +57,23 @@ def check_format(filename): # END Alphabetical Order # START Check Entries + num_in_category = min_entries_per_section + 1 + anchor_re = re.compile('###\s\S+') for line_num, line in enumerate(lines): + # check each section for the minimum number of entries + if line.startswith(anchor): + if not anchor_re.match(line): + add_error(line_num, "section header is not formatted correctly") + if num_in_category < min_entries_per_section: + add_error(category_line, "{} section does not have the minimum {} entries (only has {})".format( + category, min_entries_per_section, num_in_category)) + category = line.split(' ')[1] + category_line = line_num + num_in_category = 0 + continue if not line.startswith('|') or line.startswith('|---'): continue + num_in_category += 1 segments = line.split('|')[1:-1] # START Global for segment in segments: @@ -75,7 +91,7 @@ def check_format(filename): # first character should be capitalized char = segments[index_desc][0] if char.upper() != char: - add_error(line_num, "first char of Description is not capitalized") + add_error(line_num, "first character of description is not capitalized") # last character should not punctuation char = segments[index_desc][-1] if char in punctuation: @@ -103,7 +119,7 @@ def check_format(filename): # url should be wrapped in '[Go!]()' Markdown syntax link = segments[index_link] if not link.startswith('[Go!](http') or not link.endswith(')'): - add_error(line_num, 'link format should be "[Go!](LINK)"') + add_error(line_num, 'link syntax should be "[Go!](LINK)"') # END Link # END Check Entries