]>
Commit | Line | Data |
---|---|---|
8bb4bdeb XL |
1 | # Copyright 2015 Google Inc. All rights reserved. |
2 | # | |
3 | # Permission is hereby granted, free of charge, to any person obtaining a copy | |
4 | # of this software and associated documentation files (the "Software"), to deal | |
5 | # in the Software without restriction, including without limitation the rights | |
6 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
7 | # copies of the Software, and to permit persons to whom the Software is | |
8 | # furnished to do so, subject to the following conditions: | |
9 | # | |
10 | # The above copyright notice and this permission notice shall be included in | |
11 | # all copies or substantial portions of the Software. | |
12 | # | |
13 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
14 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
15 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
16 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
17 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
18 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
19 | # THE SOFTWARE. | |
20 | ||
21 | # get https://html.spec.whatwg.org/multipage/entities.json | |
22 | # Usage: python tools/mk_entities.py entities.json > src/entities.rs | |
23 | ||
24 | import json | |
25 | import sys | |
26 | ||
27 | def main(args): | |
28 | jsondata = json.loads(file(args[1]).read()) | |
29 | entities = [entity[1:-1] for entity in jsondata.keys() if entity.endswith(';')] | |
30 | entities.sort() | |
31 | print """// Copyright 2015 Google Inc. All rights reserved. | |
32 | // | |
33 | // Permission is hereby granted, free of charge, to any person obtaining a copy | |
34 | // of this software and associated documentation files (the "Software"), to deal | |
35 | // in the Software without restriction, including without limitation the rights | |
36 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
37 | // copies of the Software, and to permit persons to whom the Software is | |
38 | // furnished to do so, subject to the following conditions: | |
39 | // | |
40 | // The above copyright notice and this permission notice shall be included in | |
41 | // all copies or substantial portions of the Software. | |
42 | // | |
43 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
44 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
45 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
46 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
47 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
48 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
49 | // THE SOFTWARE. | |
50 | ||
51 | //! Expansions of HTML5 entities | |
52 | ||
53 | // Autogenerated by mk_entities.py | |
54 | ||
55 | const ENTITIES: [&'static str; %i] = [""" % len(entities) | |
56 | for e in entities: | |
57 | print " \"" + e + "\"," | |
58 | print """ ]; | |
59 | ||
60 | const ENTITY_VALUES: [&'static str; %i] = [""" % len(entities) | |
61 | for e in entities: | |
62 | codepoints = jsondata['&' + e + ';']["codepoints"]; | |
63 | s = ''.join(['\u{%04X}' % cp for cp in codepoints]) | |
64 | print " \"" + s + "\"," | |
65 | print """ ]; | |
66 | ||
67 | pub fn get_entity(name: &str) -> Option<&'static str> { | |
68 | ENTITIES.binary_search(&name).ok().map(|i| ENTITY_VALUES[i]) | |
69 | } | |
70 | """ | |
71 | ||
72 | main(sys.argv) |