Take double-quote characters into account when parsing trigraph

For now, the function parse_trigraph() defined in gobject/glib-mkenums
script was not taking double-quotes characters into account:

>>> parse_trigraph('name="eek, a comma"')
{'name': '"eek', 'a': None}

This patch take double-quotes characters into account:

>>> parse_trigraph('name="eek, a comma"')
{'name': 'eek, a comma'}

Closes issue #65
This commit is contained in:
Emmanuel Fleury 2023-05-26 11:07:09 +02:00
parent ecbe360a38
commit 7e5607d534
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):
result = {}
for opt in re.split(r'\s*,\s*', opts):
for opt in re.findall(r'(?:[^\s,"]|"(?:\\.|[^"])*")+', opts):
opt = re.sub(r'^\s*', '', opt)
opt = re.sub(r'\s*$', '', opt)
m = re.search(r'(\w+)(?:=(.+))?', opt)
@ -161,7 +160,7 @@ def parse_trigraph(opts):
val = groups[1]
else:
val = 1
result[key] = val
result[key] = val.strip('"') if val is not None else None
return result
def parse_entries(file, file_name):

View File

@ -520,6 +520,31 @@ comment: {standard_bottom_comment}
"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):
template_contents = """
/*** BEGIN file-header ***/