More flexible release profile header parsing

Instead of requiring a specific header depth to know what header
represents a release profile, we now search for 'release profile' in the
header name.
pull/5/head
Robert Dailey 4 years ago
parent 2578d82092
commit 09c24a911d

@ -9,7 +9,7 @@ TermCategory = Enum('TermCategory', 'Preferred Required Ignored')
header_regex = re.compile(r'^(#+)\s([\w\s\d]+)\s*$') header_regex = re.compile(r'^(#+)\s([\w\s\d]+)\s*$')
score_regex = re.compile(r'score.*?\[(-?[\d]+)\]', re.IGNORECASE) score_regex = re.compile(r'score.*?\[(-?[\d]+)\]', re.IGNORECASE)
# included_preferred_regex = re.compile(r'include preferred', re.IGNORECASE) header_release_profile_regex = re.compile(r'release profile', re.IGNORECASE)
# not_regex = re.compile(r'not', re.IGNORECASE) # not_regex = re.compile(r'not', re.IGNORECASE)
category_regex = ( category_regex = (
(TermCategory.Required, re.compile(r'must contain', re.IGNORECASE)), (TermCategory.Required, re.compile(r'must contain', re.IGNORECASE)),
@ -42,20 +42,17 @@ def parse_markdown(logger, markdown_content):
for line in markdown_content.splitlines(): for line in markdown_content.splitlines():
# Header processing # Header processing
if match := header_regex.search(line): if match := header_regex.search(line):
header_depth = len(match.group(1))
header_text = match.group(2) header_text = match.group(2)
# Profile name (always reset previous state here) # Profile name (always reset previous state here)
if header_depth == 3: if header_release_profile_regex.search(header_text):
score = None score = None
category = TermCategory.Preferred category = TermCategory.Preferred
profile_name = header_text profile_name = header_text
logger.debug(f'New Profile: {header_text}') logger.debug(f'New Profile: {header_text}')
# Filter type for provided regexes # Filter type for provided regexes
elif header_depth == 4: elif category := parse_category(header_text):
category = parse_category(header_text) logger.debug(f' Category Set: {category}')
if category:
logger.debug(f' Category Set: {category}')
# Lines we always look for # Lines we always look for
elif line.startswith('```'): elif line.startswith('```'):

@ -1,4 +1,4 @@
### Profile 1 ### Release Profile 1
The score is [100] The score is [100]

Loading…
Cancel
Save