|
3 | 3 | # See the LICENSE file in the project root for more information. |
4 | 4 |
|
5 | 5 | import encodings |
| 6 | +import itertools |
| 7 | +import sys |
6 | 8 |
|
7 | 9 | from generate import generate |
8 | 10 |
|
9 | 11 | def gen_aliases(cw): |
10 | 12 | cw.writeline("// Based on encodings.aliases") |
11 | 13 | cw.enter_block("var d = new Dictionary<string, string>") |
12 | 14 |
|
13 | | - for codec in sorted(set(encodings.aliases.aliases.values())): |
| 15 | + aliases = encodings.aliases.aliases |
| 16 | + aliases_36 = { |
| 17 | + "kz_1048": "kz1048", |
| 18 | + "rk1048": "kz1048", |
| 19 | + "strk1048_2002": "kz1048", |
| 20 | + } |
| 21 | + codecs_36 = {v: "PYTHON_36_OR_GREATER" for v in aliases_36.values()} |
| 22 | + if sys.version_info >= (3, 6): |
| 23 | + for k, v in aliases_36.items(): |
| 24 | + assert aliases[k] == v |
| 25 | + aliases = {**aliases, **aliases_36} |
| 26 | + |
| 27 | + sorted_aliases = sorted(aliases.items(), key=lambda kv: (kv[1], kv[0])) |
| 28 | + for codec, group in itertools.groupby(sorted_aliases, key=lambda kv: kv[1]): |
| 29 | + condition = codecs_36.get(codec) |
| 30 | + |
14 | 31 | e = encodings.search_function(codec) |
15 | | - if e is None or not e._is_text_encoding or e.name == "mbcs": |
| 32 | + if not condition and (e is None or not e._is_text_encoding or e.name == "mbcs"): |
16 | 33 | continue |
17 | 34 |
|
18 | 35 | cw.writeline() |
19 | | - aliases = sorted(alias for alias, aliased_codec in encodings.aliases.aliases.items() if aliased_codec == codec) |
20 | | - for alias in aliases: |
| 36 | + if condition: |
| 37 | + cw.writeline("#if {0}".format(condition)) |
| 38 | + for alias, codec in group: |
21 | 39 | qalias = '"{0}"'.format(alias) |
22 | 40 | qcodec = '"{0}"'.format(codec) |
23 | 41 | cw.writeline('{{ {0:24} , {1:24} }},'.format(qalias, qcodec)) |
| 42 | + if condition: |
| 43 | + cw.writeline("#endif") |
24 | 44 |
|
25 | 45 | cw.exit_block(";") |
26 | 46 |
|
|
0 commit comments