| Index: Source/bindings/scripts/unstable/blink_idl_parser.py
|
| diff --git a/Source/bindings/scripts/unstable/blink_idl_parser.py b/Source/bindings/scripts/unstable/blink_idl_parser.py
|
| index 3418c9f37be371534305e553d81f77861354530d..bf40c68e1b7379d5669807aa54321c2e0921f21c 100644
|
| --- a/Source/bindings/scripts/unstable/blink_idl_parser.py
|
| +++ b/Source/bindings/scripts/unstable/blink_idl_parser.py
|
| @@ -305,6 +305,7 @@ class BlinkIDLParser(IDLParser):
|
| | ExtendedAttributeArgList
|
| | ExtendedAttributeIdent
|
| | ExtendedAttributeIdentList
|
| + | ExtendedAttributeStringLiteralList
|
| | ExtendedAttributeNamedArgList"""
|
| p[0] = p[1]
|
|
|
| @@ -371,6 +372,26 @@ class BlinkIDLParser(IDLParser):
|
| else:
|
| p[0] = p[1]
|
|
|
| + # Blink extension: Add support for compound Extended Attribute values over string literals ("A"|"B")
|
| + def p_ExtendedAttributeStringLiteralList(self, p):
|
| + """ExtendedAttributeStringLiteralList : identifier '=' StringLiteralOrList"""
|
| + value = self.BuildAttribute('VALUE', p[3])
|
| + p[0] = self.BuildNamed('ExtAttribute', p, 1, value)
|
| +
|
| + # Blink extension: one or more string literals. The values aren't propagated as literals,
|
| + # but their by their value only.
|
| + def p_StringLiteralOrList(self, p):
|
| + """StringLiteralOrList : StringLiteral '|' StringLiteralOrList
|
| + | StringLiteral"""
|
| + def unwrap_string(ls):
|
| + """Reach in and grab the string literal's "NAME"."""
|
| + return ls[1].value
|
| +
|
| + if len(p) > 3:
|
| + p[0] = unwrap_string(p[1]) + p[2] + p[3]
|
| + else:
|
| + p[0] = unwrap_string(p[1])
|
| +
|
| def __dir__(self):
|
| # Remove REMOVED_RULES from listing so yacc doesn't parse them
|
| # FIXME: Upstream
|
|
|