Merge branch 'glib-mkenums_parse_trigraph' into 'main'

Take double-quote characters into account when parsing trigraph

Closes #65

See merge request GNOME/glib!3452
This commit is contained in:
Philip Withnall 2023-05-30 14:45:54 +00:00
commit 5c50aec060
2 changed files with 27 additions and 3 deletions

View File

@ -149,8 +149,7 @@ output = '' # Filename to write result into
def parse_trigraph(opts): def parse_trigraph(opts):
result = {} result = {}
for opt in re.findall(r'(?:[^\s,"]|"(?:\\.|[^"])*")+', opts):
for opt in re.split(r'\s*,\s*', opts):
opt = re.sub(r'^\s*', '', opt) opt = re.sub(r'^\s*', '', opt)
opt = re.sub(r'\s*$', '', opt) opt = re.sub(r'\s*$', '', opt)
m = re.search(r'(\w+)(?:=(.+))?', opt) m = re.search(r'(\w+)(?:=(.+))?', opt)
@ -161,7 +160,7 @@ def parse_trigraph(opts):
val = groups[1] val = groups[1]
else: else:
val = 1 val = 1
result[key] = val result[key] = val.strip('"') if val is not None else None
return result return result
def parse_entries(file, file_name): def parse_entries(file, file_name):

View File

@ -520,6 +520,31 @@ comment: {standard_bottom_comment}
"0", "0",
) )
def test_with_double_quotes(self):
"""Test trigraphs with double-quoted expressions. Issue #65."""
h_contents = """
typedef enum {
FOO_VALUE /*< nick="eek, a comma" >*/
} Foo;
"""
result = self.runMkenumsWithHeader(h_contents)
self.assertEqual("", result.err)
self.assertSingleEnum(
result,
"Foo",
"foo_",
"FOO_",
"",
"FOO",
"",
"enum",
"Enum",
"ENUM",
"FOO_VALUE",
"eek, a comma",
"0",
)
def test_filename_basename_in_fhead_ftail(self): def test_filename_basename_in_fhead_ftail(self):
template_contents = """ template_contents = """
/*** BEGIN file-header ***/ /*** BEGIN file-header ***/