| #!/bin/bash | |
| # Copyright 2014 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. | |
| function preamble { | |
| encoding="$1" | |
| cat <<PREAMBLE | |
| # *************************************************************************** | |
| # * | |
| # * Generated from index-$encoding.txt ( | |
| # * https://encoding.spec.whatwg.org/index-${encoding}.txt ) | |
| # * following the algorithm for the single byte legacy encoding | |
| # * described at http://encoding.spec.whatwg.org/#single-byte-decoder | |
| # * | |
| # *************************************************************************** | |
| <code_set_name> "${encoding}-html" | |
| <char_name_mask> "AXXXX" | |
| <mb_cur_max> 1 | |
| <mb_cur_min> 1 | |
| <uconv_class> "SBCS" | |
| <subchar> \x3F | |
| <icu:charsetFamily> "ASCII" | |
| CHARMAP | |
| PREAMBLE | |
| } | |
| # The list of html5 encodings. Note that iso-8859-8-i is not listed here | |
| # because its mapping table is exactly the same as iso-8859-8. The difference | |
| # is BiDi handling (logical vs visual). | |
| encodings="ibm866 iso-8859-2 iso-8859-3 iso-8859-4 iso-8859-5 iso-8859-6\ | |
| iso-8859-7 iso-8859-8 iso-8859-10 iso-8859-13 iso-8859-14\ | |
| iso-8859-15 iso-8859-16 koi8-r koi8-u macintosh\ | |
| windows-874 windows-1250 windows-1251 windows-1252 windows-1253\ | |
| windows-1254 windows-1255 windows-1256 windows-1257 windows-1258\ | |
| x-mac-cyrillic" | |
| ENCODING_DIR="$(dirname "$0")/../source/data/mappings" | |
| for e in ${encodings} | |
| do | |
| output="${ENCODING_DIR}/${e}-html.ucm" | |
| index="index-${e}.txt" | |
| indexurl="https://encoding.spec.whatwg.org/index-${e}.txt" | |
| curl -o ${index} "${indexurl}" | |
| preamble ${e} > ${output} | |
| awk 'BEGIN \ | |
| { \ | |
| for (i=0; i < 0x80; ++i) \ | |
| { \ | |
| printf("<U%04X> \\x%02X |0\n", i, i);} \ | |
| } \ | |
| !/^#/ && !/^$/ \ | |
| { | |
| printf ("<U%4s> \\x%02X |0\n", substr($2, 3), $1 + 0x80); \ | |
| }' ${index} | sort >> ${output} | |
| echo 'END CHARMAP' >> ${output} | |
| rm ${index} | |
| done | |