1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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"
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))
|