Chromium Code Reviews| Index: tools/polymer/txt_to_polymer_grdp.py |
| diff --git a/tools/polymer/txt_to_polymer_grdp.py b/tools/polymer/txt_to_polymer_grdp.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..4ad08c51604837142229b9fdcee59006749bb601 |
| --- /dev/null |
| +++ b/tools/polymer/txt_to_polymer_grdp.py |
| @@ -0,0 +1,94 @@ |
| +#!/usr/bin/env python |
| +# Copyright 2015 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. |
| + |
| +from __future__ import with_statement |
| +import string |
| +import sys |
| + |
| + |
| +FILE_TEMPLATE = \ |
| +"""<?xml version="1.0" encoding="utf-8"?> |
| +<!-- |
| + This file is generated. |
| + Please use 'src/tools/polymer/polymer_grdp_to_txt.py' and |
| + 'src/tools/polymer/txt_to_polymer_grdp.py' to modify it, if possible. |
| + |
| + 'polymer_grdp_to_txt.py' converts 'polymer_resources.grdp' to a plane list of |
| + used Polymer components. v1.0 elements are marked with 'v1.0 ' prefix: |
| + ... |
| + core-animation/core-animation.html |
| + core-animation/web-animations.html |
| + core-collapse/core-collapse-extracted.js |
| + core-collapse/core-collapse.css |
| + core-collapse/core-collapse.html |
| + core-dropdown/core-dropdown-base-extracted.js |
| + ... |
| + v1.0 iron-iron-iconset/iron-iconset-extracted.js |
| + v1.0 iron-iron-iconset/iron-iconset.html |
| + ... |
| + |
| + 'txt_to_polymer_grdp.py' converts list back to GRDP file. |
| + |
| + Usage: |
| + $ polymer_grdp_to_txt.py polymer_resources.grdp > /tmp/list.txt |
| + $ vim /tmp/list.txt |
| + $ txt_to_polymer_grdp.py /tmp/list.txt > polymer_resources.grdp |
| +--> |
| +<grit-part> |
| + <!-- Polymer 0.5 (TODO: Remove by M45 branch point) --> |
| +%(v_0_5)s |
| + <structure name="IDR_POLYMER_WEB_ANIMATIONS_JS_WEB_ANIMATIONS_NEXT_LITE_MIN_JS" |
| + file="../../../third_party/web-animations-js/sources/web-animations-next-lite.min.js" |
| + type="chrome_html" /> |
| + <structure name="IDR_POLYMER_WEB_ANIMATIONS_JS_WEB_ANIMATIONS_NEXT_LITE_MIN_JS_MAP" |
| + file="../../../third_party/web-animations-js/sources/web-animations-next-lite.min.js.map" |
|
Dan Beam
2015/06/16 00:09:18
the presubmit is not fond of your examples... perh
dzhioev (left Google)
2015/06/16 00:18:16
Unfortunately this is not an example, but a part o
Dan Beam
2015/06/16 00:19:40
ah, either do some string splitting magic or NOPRE
|
| + type="chrome_html" /> |
| + |
| + <!-- Polymer 1.0 --> |
| +%(v_1_0)s |
| +</grit-part> |
| +""" |
| + |
| + |
| +DEFINITION_TEMPLATE_0_5 = \ |
| +""" <structure name="%s" |
| + file="../../../third_party/polymer/components-chromium/%s" |
| + type="chrome_html" />""" |
| + |
| +DEFINITION_TEMPLATE_1_0 = \ |
| +""" <structure name="%s" |
| + file="../../../third_party/polymer/v1_0/components-chromium/%s" |
| + type="chrome_html" />""" |
| + |
| + |
| +def PathToGritId(path, is_1_0): |
| + table = string.maketrans(string.lowercase + '/.-', string.uppercase + '___') |
| + return 'IDR_POLYMER_' + ('1_0_' if is_1_0 else '') + path.translate(table) |
| + |
| +def SortKey(record): |
| + return (record[1], PathToGritId(record[0], record[1])) |
| + |
| + |
| +def ParseRecord(record): |
| + record = record.strip() |
| + v_1_0_prefix = 'v1.0 ' |
| + if record.startswith(v_1_0_prefix): |
| + return (record[len(v_1_0_prefix):], True) |
| + else: |
| + return (record, False) |
| + |
| +def main(argv): |
| + with open(argv[1]) as f: |
| + records = [ParseRecord(r) for r in f if not r.isspace()] |
| + lines = { 'v_0_5': [], 'v_1_0': [] } |
| + for (path, is_1_0) in sorted(set(records), key=SortKey): |
| + template = DEFINITION_TEMPLATE_1_0 if is_1_0 else DEFINITION_TEMPLATE_0_5 |
| + lines['v_1_0' if is_1_0 else 'v_0_5'].append( |
| + template % (PathToGritId(path, is_1_0), path)) |
| + print FILE_TEMPLATE % { 'v_0_5': '\n'.join(lines['v_0_5']), |
| + 'v_1_0': '\n'.join(lines['v_1_0']) } |
| + |
| +if __name__ == '__main__': |
| + sys.exit(main(sys.argv)) |