blob: d714d5b3f5e88c99e90edf0e025c7acb2f79c75f [file] [log] [blame]
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import json5_generator
class FieldAliasExpander(object):
"""
A helper for expanding the "field_template" parameter in css_properties.json5
It takes the list of aliases and expansions from the given file_path, (it
should point to core/css/computed_style_field_aliases.json5) and uses that to
inform which fields in a given property should be set.
"""
def __init__(self, file_path):
loaded_file = json5_generator.Json5File.load_from_files([file_path])
self._field_aliases = dict([
(alias["name"], alias) for alias in loaded_file.name_dictionaries
])
def expand_field_alias(self, property_):
"""
Does expansion based on the value of field_template of a given property.
"""
if property_['field_template'] in self._field_aliases:
alias_template = property_['field_template']
for field in self._field_aliases[alias_template]:
if field == 'name':
continue
property_[field] = self._field_aliases[alias_template][field]