Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2016 The Chromium Authors. All rights reserved. | 2 # Copyright 2016 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import math | 6 import math |
| 7 import sys | 7 import sys |
| 8 | 8 |
| 9 import json5_generator | 9 import json5_generator |
| 10 import template_expander | 10 import template_expander |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 182 groups[field.group_name].append(field) | 182 groups[field.group_name].append(field) |
| 183 | 183 |
| 184 no_group = groups.pop(None) | 184 no_group = groups.pop(None) |
| 185 subgroups = [Group(group_name, [], _reorder_fields(fields)) for group_name, fields in groups.items()] | 185 subgroups = [Group(group_name, [], _reorder_fields(fields)) for group_name, fields in groups.items()] |
| 186 return Group('', subgroups=subgroups, fields=_reorder_fields(no_group)) | 186 return Group('', subgroups=subgroups, fields=_reorder_fields(no_group)) |
| 187 | 187 |
| 188 | 188 |
| 189 def _create_diff_groups_map(diff_function_inputs, root_group): | 189 def _create_diff_groups_map(diff_function_inputs, root_group): |
| 190 diff_functions_map = {} | 190 diff_functions_map = {} |
| 191 for entry in diff_function_inputs: | 191 for entry in diff_function_inputs: |
| 192 diff_functions_map[entry['name']] = _create_diff_groups(entry['fields'], root_group) | 192 diff_functions_map[entry['name']] = _create_diff_groups(entry['fields_to _diff'], entry['methods_to_diff'], root_group) |
| 193 return diff_functions_map | 193 return diff_functions_map |
| 194 | 194 |
| 195 | 195 |
| 196 def _create_diff_groups(fields_to_diff, root_group): | 196 def _list_field_dependencies(methods_to_diff): |
| 197 field_dependencies = [] | |
| 198 for entry in methods_to_diff: | |
| 199 field_dependencies.append(entry['field_dependencies']) | |
| 200 return field_dependencies | |
|
alancutter (OOO until 2018)
2017/05/16 03:28:38
This looks like it's creating a list of lists.
nainar
2017/05/16 03:46:13
Fixed.
| |
| 201 | |
| 202 | |
| 203 def _create_diff_groups(fields_to_diff, methods_to_diff, root_group): | |
| 197 diff_group = DiffGroup(root_group.member_name) | 204 diff_group = DiffGroup(root_group.member_name) |
| 205 field_dependencies = _list_field_dependencies(methods_to_diff) | |
| 198 for subgroup in root_group.subgroups: | 206 for subgroup in root_group.subgroups: |
| 199 if any(field.property_name in fields_to_diff for field in subgroup.all_f ields): | 207 if any(field.property_name in (fields_to_diff + field_dependencies) for field in subgroup.all_fields): |
| 200 diff_group.subgroups.append(_create_diff_groups(fields_to_diff, subg roup)) | 208 diff_group.subgroups.append(_create_diff_groups(fields_to_diff, meth ods_to_diff, subgroup)) |
| 201 for field in root_group.fields: | 209 for field in root_group.fields: |
| 202 if field.property_name in fields_to_diff: | 210 if field.property_name in fields_to_diff: |
| 203 diff_group.expressions.append(field.getter_expression) | 211 diff_group.expressions.append(field.getter_expression) |
| 212 for entry in methods_to_diff: | |
| 213 if field.property_name in entry['field_dependencies']: | |
| 214 diff_group.expressions.append(entry['method']) | |
| 204 return diff_group | 215 return diff_group |
| 205 | 216 |
| 206 | 217 |
| 207 def _create_enums(properties): | 218 def _create_enums(properties): |
| 208 """ | 219 """ |
| 209 Returns an OrderedDict of enums to be generated, enum name -> [list of enum values] | 220 Returns an OrderedDict of enums to be generated, enum name -> [list of enum values] |
| 210 """ | 221 """ |
| 211 enums = {} | 222 enums = {} |
| 212 for property_ in properties: | 223 for property_ in properties: |
| 213 # Only generate enums for keyword properties that use the default field_ type_path. | 224 # Only generate enums for keyword properties that use the default field_ type_path. |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 431 | 442 |
| 432 @template_expander.use_jinja('ComputedStyleBaseConstants.h.tmpl') | 443 @template_expander.use_jinja('ComputedStyleBaseConstants.h.tmpl') |
| 433 def generate_base_computed_style_constants(self): | 444 def generate_base_computed_style_constants(self): |
| 434 return { | 445 return { |
| 435 'properties': self._properties, | 446 'properties': self._properties, |
| 436 'enums': self._generated_enums, | 447 'enums': self._generated_enums, |
| 437 } | 448 } |
| 438 | 449 |
| 439 if __name__ == '__main__': | 450 if __name__ == '__main__': |
| 440 json5_generator.Maker(ComputedStyleBaseWriter).main() | 451 json5_generator.Maker(ComputedStyleBaseWriter).main() |
| OLD | NEW |