buildman: Extract tag parsing from parse() into _parse_tag()
Move the handling of tag lines (name:, desc:, fragment:, targets:) into a separate method to reduce complexity of parse() Co-developed-by: Claude Opus 4.5 <noreply@anthropic.com> Signed-off-by: Simon Glass <simon.glass@canonical.com>
This commit is contained in:
@@ -1114,24 +1114,37 @@ class ExtendedParser:
|
|||||||
f'{fname}:{linenum}: Invalid target regex')
|
f'{fname}:{linenum}: Invalid target regex')
|
||||||
self.targets.append(['regex', line.strip()])
|
self.targets.append(['regex', line.strip()])
|
||||||
else:
|
else:
|
||||||
pair = line.split(':')
|
self._parse_tag(fname, linenum, line)
|
||||||
if len(pair) != 2:
|
|
||||||
raise ValueError(f'{fname}:{linenum}: Invalid tag')
|
|
||||||
tag, rest = pair
|
|
||||||
value = rest.strip()
|
|
||||||
if tag == 'name':
|
|
||||||
self.finish()
|
|
||||||
if ' ' in value:
|
|
||||||
raise ValueError(f'{fname}:{linenum}: Invalid name')
|
|
||||||
self.name = value
|
|
||||||
elif tag == 'desc':
|
|
||||||
self.desc = value
|
|
||||||
elif tag == 'fragment':
|
|
||||||
self.fragments.append(value)
|
|
||||||
elif tag == 'targets':
|
|
||||||
self.in_targets = True
|
|
||||||
else:
|
|
||||||
raise ValueError(f"{fname}:{linenum}: Unknown tag '{tag}'")
|
|
||||||
|
|
||||||
self.finish()
|
self.finish()
|
||||||
return self.extended
|
return self.extended
|
||||||
|
|
||||||
|
def _parse_tag(self, fname, linenum, line):
|
||||||
|
"""Parse a tag line (one not starting with a space)
|
||||||
|
|
||||||
|
Args:
|
||||||
|
fname (str): Filename (for error messages)
|
||||||
|
linenum (int): Line number (for error messages)
|
||||||
|
line (str): Line to parse
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
ValueError: Invalid syntax
|
||||||
|
"""
|
||||||
|
pair = line.split(':')
|
||||||
|
if len(pair) != 2:
|
||||||
|
raise ValueError(f'{fname}:{linenum}: Invalid tag')
|
||||||
|
tag, rest = pair
|
||||||
|
value = rest.strip()
|
||||||
|
if tag == 'name':
|
||||||
|
self.finish()
|
||||||
|
if ' ' in value:
|
||||||
|
raise ValueError(f'{fname}:{linenum}: Invalid name')
|
||||||
|
self.name = value
|
||||||
|
elif tag == 'desc':
|
||||||
|
self.desc = value
|
||||||
|
elif tag == 'fragment':
|
||||||
|
self.fragments.append(value)
|
||||||
|
elif tag == 'targets':
|
||||||
|
self.in_targets = True
|
||||||
|
else:
|
||||||
|
raise ValueError(f"{fname}:{linenum}: Unknown tag '{tag}'")
|
||||||
|
|||||||
Reference in New Issue
Block a user