Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: build/android/gyp/java_cpp_enum.py

Issue 659493003: Final step of the java_cpp_template -> java_cpp_enum migration. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: delete some more template files Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2014 The Chromium Authors. All rights reserved. 3 # Copyright 2014 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 import collections 7 import collections
8 import re 8 import re
9 import optparse 9 import optparse
10 import os 10 import os
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 54
55 55
56 def _StripPrefix(self): 56 def _StripPrefix(self):
57 if not self.prefix_to_strip: 57 if not self.prefix_to_strip:
58 prefix_to_strip = re.sub('(?!^)([A-Z]+)', r'_\1', self.class_name).upper() 58 prefix_to_strip = re.sub('(?!^)([A-Z]+)', r'_\1', self.class_name).upper()
59 prefix_to_strip += '_' 59 prefix_to_strip += '_'
60 if not all([w.startswith(prefix_to_strip) for w in self.entries.keys()]): 60 if not all([w.startswith(prefix_to_strip) for w in self.entries.keys()]):
61 prefix_to_strip = '' 61 prefix_to_strip = ''
62 else: 62 else:
63 prefix_to_strip = self.prefix_to_strip 63 prefix_to_strip = self.prefix_to_strip
64 entries = ((k.replace(prefix_to_strip, '', 1), v) for (k, v) in 64
65 self.entries.iteritems()) 65 entries = collections.OrderedDict()
66 self.entries = collections.OrderedDict(entries) 66 for (k, v) in self.entries.iteritems():
67 stripped_key = k.replace(prefix_to_strip, '', 1)
68 if isinstance(v, basestring):
69 stripped_value = v.replace(prefix_to_strip, '', 1)
70 else:
71 stripped_value = v
72 entries[stripped_key] = stripped_value
73
74 self.entries = entries
67 75
68 class HeaderParser(object): 76 class HeaderParser(object):
69 single_line_comment_re = re.compile(r'\s*//') 77 single_line_comment_re = re.compile(r'\s*//')
70 multi_line_comment_start_re = re.compile(r'\s*/\*') 78 multi_line_comment_start_re = re.compile(r'\s*/\*')
71 enum_start_re = re.compile(r'^\s*enum\s+(\w+)\s+{\s*$') 79 enum_start_re = re.compile(r'^\s*enum\s+(\w+)\s+{\s*$')
72 enum_line_re = re.compile(r'^\s*(\w+)(\s*\=\s*([^,\n]+))?,?') 80 enum_line_re = re.compile(r'^\s*(\w+)(\s*\=\s*([^,\n]+))?,?')
73 enum_end_re = re.compile(r'^\s*}\s*;\s*$') 81 enum_end_re = re.compile(r'^\s*}\s*;\.*$')
74 generator_directive_re = re.compile( 82 generator_directive_re = re.compile(
75 r'^\s*//\s+GENERATED_JAVA_(\w+)\s*:\s*([\.\w]+)$') 83 r'^\s*//\s+GENERATED_JAVA_(\w+)\s*:\s*([\.\w]+)$')
76 84
77 def __init__(self, lines): 85 def __init__(self, lines):
78 self._lines = lines 86 self._lines = lines
79 self._enum_definitions = [] 87 self._enum_definitions = []
80 self._in_enum = False 88 self._in_enum = False
81 self._current_definition = None 89 self._current_definition = None
82 self._generator_directives = {} 90 self._generator_directives = {}
83 91
(...skipping 18 matching lines...) Expand all
102 if enum_end: 110 if enum_end:
103 self._ApplyGeneratorDirectives() 111 self._ApplyGeneratorDirectives()
104 self._current_definition.Finalize() 112 self._current_definition.Finalize()
105 self._enum_definitions.append(self._current_definition) 113 self._enum_definitions.append(self._current_definition)
106 self._in_enum = False 114 self._in_enum = False
107 elif enum_entry: 115 elif enum_entry:
108 enum_key = enum_entry.groups()[0] 116 enum_key = enum_entry.groups()[0]
109 enum_value = enum_entry.groups()[2] 117 enum_value = enum_entry.groups()[2]
110 self._current_definition.AppendEntry(enum_key, enum_value) 118 self._current_definition.AppendEntry(enum_key, enum_value)
111 119
120 def _GetCurrentEnumClassNameOverride(self):
121 return self._generator_directives.get('CLASS_NAME_OVERRIDE')
122
112 def _GetCurrentEnumPackageName(self): 123 def _GetCurrentEnumPackageName(self):
113 return self._generator_directives.get('ENUM_PACKAGE') 124 return self._generator_directives.get('ENUM_PACKAGE')
114 125
115 def _GetCurrentEnumPrefixToStrip(self): 126 def _GetCurrentEnumPrefixToStrip(self):
116 return self._generator_directives.get('PREFIX_TO_STRIP', '') 127 return self._generator_directives.get('PREFIX_TO_STRIP', '')
117 128
118 def _ApplyGeneratorDirectives(self): 129 def _ApplyGeneratorDirectives(self):
119 current_definition = self._current_definition 130 current_definition = self._current_definition
120 current_definition.class_package = self._GetCurrentEnumPackageName() 131 current_definition.class_package = self._GetCurrentEnumPackageName()
121 current_definition.prefix_to_strip = self._GetCurrentEnumPrefixToStrip() 132 current_definition.prefix_to_strip = self._GetCurrentEnumPrefixToStrip()
122 self._generator_directives = {} 133 self._generator_directives = {}
123 134
124 def _ParseRegularLine(self, line): 135 def _ParseRegularLine(self, line):
125 enum_start = HeaderParser.enum_start_re.match(line) 136 enum_start = HeaderParser.enum_start_re.match(line)
126 generator_directive = HeaderParser.generator_directive_re.match(line) 137 generator_directive = HeaderParser.generator_directive_re.match(line)
127 if enum_start: 138 if enum_start:
128 if not self._GetCurrentEnumPackageName(): 139 if not self._GetCurrentEnumPackageName():
129 return 140 return
130 self._current_definition = EnumDefinition() 141 self._current_definition = EnumDefinition()
131 self._current_definition.class_name = enum_start.groups()[0] 142 self._current_definition.class_name = (
143 self._GetCurrentEnumClassNameOverride() or enum_start.groups()[0])
132 self._in_enum = True 144 self._in_enum = True
133 elif generator_directive: 145 elif generator_directive:
134 directive_name = generator_directive.groups()[0] 146 directive_name = generator_directive.groups()[0]
135 directive_value = generator_directive.groups()[1] 147 directive_value = generator_directive.groups()[1]
136 self._generator_directives[directive_name] = directive_value 148 self._generator_directives[directive_name] = directive_value
137 149
138 150
139 def GetScriptName(): 151 def GetScriptName():
140 script_components = os.path.abspath(sys.argv[0]).split(os.path.sep) 152 script_components = os.path.abspath(sys.argv[0]).split(os.path.sep)
141 build_index = script_components.index('build') 153 build_index = script_components.index('build')
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 240
229 output_paths = DoGenerate(options, args) 241 output_paths = DoGenerate(options, args)
230 242
231 if options.assert_files_list: 243 if options.assert_files_list:
232 AssertFilesList(output_paths, options.assert_files_list) 244 AssertFilesList(output_paths, options.assert_files_list)
233 245
234 return " ".join(output_paths) 246 return " ".join(output_paths)
235 247
236 if __name__ == '__main__': 248 if __name__ == '__main__':
237 DoMain(sys.argv[1:]) 249 DoMain(sys.argv[1:])
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698