diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Source/WebKit2/Scripts/webkit2/parser.py | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebKit2/Scripts/webkit2/parser.py')
-rw-r--r-- | Source/WebKit2/Scripts/webkit2/parser.py | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/Source/WebKit2/Scripts/webkit2/parser.py b/Source/WebKit2/Scripts/webkit2/parser.py index c40080f0a..e16593ae6 100644 --- a/Source/WebKit2/Scripts/webkit2/parser.py +++ b/Source/WebKit2/Scripts/webkit2/parser.py @@ -26,17 +26,20 @@ from webkit2 import model def parse(file): + receiver_attributes = None destination = None messages = [] condition = None master_condition = None for line in file: - match = re.search(r'messages -> ([A-Za-z_0-9]+) {', line) + match = re.search(r'messages -> (?P<destination>[A-Za-z_0-9]+) \s*(?:(?P<attributes>.*?)\s+)?{', line) if match: + receiver_attributes = parse_attributes_string(match.group('attributes')) + if condition: master_condition = condition condition = None - destination = match.group(1) + destination = match.group('destination') continue if line.startswith('#'): if line.startswith('#if '): @@ -66,7 +69,7 @@ def parse(file): reply_parameters = None messages.append(model.Message(name, parameters, reply_parameters, attributes, condition)) - return model.MessageReceiver(destination, messages, master_condition) + return model.MessageReceiver(destination, receiver_attributes, messages, master_condition) def parse_attributes_string(attributes_string): @@ -75,9 +78,31 @@ def parse_attributes_string(attributes_string): return attributes_string.split() +def split_parameters_string(parameters_string): + parameters = [] + current_parameter_string = '' + + nest_level = 0 + for character in parameters_string: + if character == ',' and nest_level == 0: + parameters.append(current_parameter_string) + current_parameter_string = '' + continue + + if character == '<': + nest_level += 1 + elif character == '>': + nest_level -= 1 + + current_parameter_string += character + + parameters.append(current_parameter_string) + return parameters + def parse_parameters_string(parameters_string): parameters = [] - for parameter_string in parameters_string.split(', '): + + for parameter_string in split_parameters_string(parameters_string): match = re.search(r'\s*(?:\[(?P<attributes>.*?)\]\s+)?(?P<type_and_name>.*)', parameter_string) attributes_string, type_and_name_string = match.group('attributes', 'type_and_name') parameter_type, parameter_name = type_and_name_string.rsplit(' ', 1) |