11cb0ef41Sopenharmony_ci'use strict' 21cb0ef41Sopenharmony_ci 31cb0ef41Sopenharmony_ci/** 41cb0ef41Sopenharmony_ci * @see https://encoding.spec.whatwg.org/#concept-encoding-get 51cb0ef41Sopenharmony_ci * @param {string|undefined} label 61cb0ef41Sopenharmony_ci */ 71cb0ef41Sopenharmony_cifunction getEncoding (label) { 81cb0ef41Sopenharmony_ci if (!label) { 91cb0ef41Sopenharmony_ci return 'failure' 101cb0ef41Sopenharmony_ci } 111cb0ef41Sopenharmony_ci 121cb0ef41Sopenharmony_ci // 1. Remove any leading and trailing ASCII whitespace from label. 131cb0ef41Sopenharmony_ci // 2. If label is an ASCII case-insensitive match for any of the 141cb0ef41Sopenharmony_ci // labels listed in the table below, then return the 151cb0ef41Sopenharmony_ci // corresponding encoding; otherwise return failure. 161cb0ef41Sopenharmony_ci switch (label.trim().toLowerCase()) { 171cb0ef41Sopenharmony_ci case 'unicode-1-1-utf-8': 181cb0ef41Sopenharmony_ci case 'unicode11utf8': 191cb0ef41Sopenharmony_ci case 'unicode20utf8': 201cb0ef41Sopenharmony_ci case 'utf-8': 211cb0ef41Sopenharmony_ci case 'utf8': 221cb0ef41Sopenharmony_ci case 'x-unicode20utf8': 231cb0ef41Sopenharmony_ci return 'UTF-8' 241cb0ef41Sopenharmony_ci case '866': 251cb0ef41Sopenharmony_ci case 'cp866': 261cb0ef41Sopenharmony_ci case 'csibm866': 271cb0ef41Sopenharmony_ci case 'ibm866': 281cb0ef41Sopenharmony_ci return 'IBM866' 291cb0ef41Sopenharmony_ci case 'csisolatin2': 301cb0ef41Sopenharmony_ci case 'iso-8859-2': 311cb0ef41Sopenharmony_ci case 'iso-ir-101': 321cb0ef41Sopenharmony_ci case 'iso8859-2': 331cb0ef41Sopenharmony_ci case 'iso88592': 341cb0ef41Sopenharmony_ci case 'iso_8859-2': 351cb0ef41Sopenharmony_ci case 'iso_8859-2:1987': 361cb0ef41Sopenharmony_ci case 'l2': 371cb0ef41Sopenharmony_ci case 'latin2': 381cb0ef41Sopenharmony_ci return 'ISO-8859-2' 391cb0ef41Sopenharmony_ci case 'csisolatin3': 401cb0ef41Sopenharmony_ci case 'iso-8859-3': 411cb0ef41Sopenharmony_ci case 'iso-ir-109': 421cb0ef41Sopenharmony_ci case 'iso8859-3': 431cb0ef41Sopenharmony_ci case 'iso88593': 441cb0ef41Sopenharmony_ci case 'iso_8859-3': 451cb0ef41Sopenharmony_ci case 'iso_8859-3:1988': 461cb0ef41Sopenharmony_ci case 'l3': 471cb0ef41Sopenharmony_ci case 'latin3': 481cb0ef41Sopenharmony_ci return 'ISO-8859-3' 491cb0ef41Sopenharmony_ci case 'csisolatin4': 501cb0ef41Sopenharmony_ci case 'iso-8859-4': 511cb0ef41Sopenharmony_ci case 'iso-ir-110': 521cb0ef41Sopenharmony_ci case 'iso8859-4': 531cb0ef41Sopenharmony_ci case 'iso88594': 541cb0ef41Sopenharmony_ci case 'iso_8859-4': 551cb0ef41Sopenharmony_ci case 'iso_8859-4:1988': 561cb0ef41Sopenharmony_ci case 'l4': 571cb0ef41Sopenharmony_ci case 'latin4': 581cb0ef41Sopenharmony_ci return 'ISO-8859-4' 591cb0ef41Sopenharmony_ci case 'csisolatincyrillic': 601cb0ef41Sopenharmony_ci case 'cyrillic': 611cb0ef41Sopenharmony_ci case 'iso-8859-5': 621cb0ef41Sopenharmony_ci case 'iso-ir-144': 631cb0ef41Sopenharmony_ci case 'iso8859-5': 641cb0ef41Sopenharmony_ci case 'iso88595': 651cb0ef41Sopenharmony_ci case 'iso_8859-5': 661cb0ef41Sopenharmony_ci case 'iso_8859-5:1988': 671cb0ef41Sopenharmony_ci return 'ISO-8859-5' 681cb0ef41Sopenharmony_ci case 'arabic': 691cb0ef41Sopenharmony_ci case 'asmo-708': 701cb0ef41Sopenharmony_ci case 'csiso88596e': 711cb0ef41Sopenharmony_ci case 'csiso88596i': 721cb0ef41Sopenharmony_ci case 'csisolatinarabic': 731cb0ef41Sopenharmony_ci case 'ecma-114': 741cb0ef41Sopenharmony_ci case 'iso-8859-6': 751cb0ef41Sopenharmony_ci case 'iso-8859-6-e': 761cb0ef41Sopenharmony_ci case 'iso-8859-6-i': 771cb0ef41Sopenharmony_ci case 'iso-ir-127': 781cb0ef41Sopenharmony_ci case 'iso8859-6': 791cb0ef41Sopenharmony_ci case 'iso88596': 801cb0ef41Sopenharmony_ci case 'iso_8859-6': 811cb0ef41Sopenharmony_ci case 'iso_8859-6:1987': 821cb0ef41Sopenharmony_ci return 'ISO-8859-6' 831cb0ef41Sopenharmony_ci case 'csisolatingreek': 841cb0ef41Sopenharmony_ci case 'ecma-118': 851cb0ef41Sopenharmony_ci case 'elot_928': 861cb0ef41Sopenharmony_ci case 'greek': 871cb0ef41Sopenharmony_ci case 'greek8': 881cb0ef41Sopenharmony_ci case 'iso-8859-7': 891cb0ef41Sopenharmony_ci case 'iso-ir-126': 901cb0ef41Sopenharmony_ci case 'iso8859-7': 911cb0ef41Sopenharmony_ci case 'iso88597': 921cb0ef41Sopenharmony_ci case 'iso_8859-7': 931cb0ef41Sopenharmony_ci case 'iso_8859-7:1987': 941cb0ef41Sopenharmony_ci case 'sun_eu_greek': 951cb0ef41Sopenharmony_ci return 'ISO-8859-7' 961cb0ef41Sopenharmony_ci case 'csiso88598e': 971cb0ef41Sopenharmony_ci case 'csisolatinhebrew': 981cb0ef41Sopenharmony_ci case 'hebrew': 991cb0ef41Sopenharmony_ci case 'iso-8859-8': 1001cb0ef41Sopenharmony_ci case 'iso-8859-8-e': 1011cb0ef41Sopenharmony_ci case 'iso-ir-138': 1021cb0ef41Sopenharmony_ci case 'iso8859-8': 1031cb0ef41Sopenharmony_ci case 'iso88598': 1041cb0ef41Sopenharmony_ci case 'iso_8859-8': 1051cb0ef41Sopenharmony_ci case 'iso_8859-8:1988': 1061cb0ef41Sopenharmony_ci case 'visual': 1071cb0ef41Sopenharmony_ci return 'ISO-8859-8' 1081cb0ef41Sopenharmony_ci case 'csiso88598i': 1091cb0ef41Sopenharmony_ci case 'iso-8859-8-i': 1101cb0ef41Sopenharmony_ci case 'logical': 1111cb0ef41Sopenharmony_ci return 'ISO-8859-8-I' 1121cb0ef41Sopenharmony_ci case 'csisolatin6': 1131cb0ef41Sopenharmony_ci case 'iso-8859-10': 1141cb0ef41Sopenharmony_ci case 'iso-ir-157': 1151cb0ef41Sopenharmony_ci case 'iso8859-10': 1161cb0ef41Sopenharmony_ci case 'iso885910': 1171cb0ef41Sopenharmony_ci case 'l6': 1181cb0ef41Sopenharmony_ci case 'latin6': 1191cb0ef41Sopenharmony_ci return 'ISO-8859-10' 1201cb0ef41Sopenharmony_ci case 'iso-8859-13': 1211cb0ef41Sopenharmony_ci case 'iso8859-13': 1221cb0ef41Sopenharmony_ci case 'iso885913': 1231cb0ef41Sopenharmony_ci return 'ISO-8859-13' 1241cb0ef41Sopenharmony_ci case 'iso-8859-14': 1251cb0ef41Sopenharmony_ci case 'iso8859-14': 1261cb0ef41Sopenharmony_ci case 'iso885914': 1271cb0ef41Sopenharmony_ci return 'ISO-8859-14' 1281cb0ef41Sopenharmony_ci case 'csisolatin9': 1291cb0ef41Sopenharmony_ci case 'iso-8859-15': 1301cb0ef41Sopenharmony_ci case 'iso8859-15': 1311cb0ef41Sopenharmony_ci case 'iso885915': 1321cb0ef41Sopenharmony_ci case 'iso_8859-15': 1331cb0ef41Sopenharmony_ci case 'l9': 1341cb0ef41Sopenharmony_ci return 'ISO-8859-15' 1351cb0ef41Sopenharmony_ci case 'iso-8859-16': 1361cb0ef41Sopenharmony_ci return 'ISO-8859-16' 1371cb0ef41Sopenharmony_ci case 'cskoi8r': 1381cb0ef41Sopenharmony_ci case 'koi': 1391cb0ef41Sopenharmony_ci case 'koi8': 1401cb0ef41Sopenharmony_ci case 'koi8-r': 1411cb0ef41Sopenharmony_ci case 'koi8_r': 1421cb0ef41Sopenharmony_ci return 'KOI8-R' 1431cb0ef41Sopenharmony_ci case 'koi8-ru': 1441cb0ef41Sopenharmony_ci case 'koi8-u': 1451cb0ef41Sopenharmony_ci return 'KOI8-U' 1461cb0ef41Sopenharmony_ci case 'csmacintosh': 1471cb0ef41Sopenharmony_ci case 'mac': 1481cb0ef41Sopenharmony_ci case 'macintosh': 1491cb0ef41Sopenharmony_ci case 'x-mac-roman': 1501cb0ef41Sopenharmony_ci return 'macintosh' 1511cb0ef41Sopenharmony_ci case 'iso-8859-11': 1521cb0ef41Sopenharmony_ci case 'iso8859-11': 1531cb0ef41Sopenharmony_ci case 'iso885911': 1541cb0ef41Sopenharmony_ci case 'tis-620': 1551cb0ef41Sopenharmony_ci case 'windows-874': 1561cb0ef41Sopenharmony_ci return 'windows-874' 1571cb0ef41Sopenharmony_ci case 'cp1250': 1581cb0ef41Sopenharmony_ci case 'windows-1250': 1591cb0ef41Sopenharmony_ci case 'x-cp1250': 1601cb0ef41Sopenharmony_ci return 'windows-1250' 1611cb0ef41Sopenharmony_ci case 'cp1251': 1621cb0ef41Sopenharmony_ci case 'windows-1251': 1631cb0ef41Sopenharmony_ci case 'x-cp1251': 1641cb0ef41Sopenharmony_ci return 'windows-1251' 1651cb0ef41Sopenharmony_ci case 'ansi_x3.4-1968': 1661cb0ef41Sopenharmony_ci case 'ascii': 1671cb0ef41Sopenharmony_ci case 'cp1252': 1681cb0ef41Sopenharmony_ci case 'cp819': 1691cb0ef41Sopenharmony_ci case 'csisolatin1': 1701cb0ef41Sopenharmony_ci case 'ibm819': 1711cb0ef41Sopenharmony_ci case 'iso-8859-1': 1721cb0ef41Sopenharmony_ci case 'iso-ir-100': 1731cb0ef41Sopenharmony_ci case 'iso8859-1': 1741cb0ef41Sopenharmony_ci case 'iso88591': 1751cb0ef41Sopenharmony_ci case 'iso_8859-1': 1761cb0ef41Sopenharmony_ci case 'iso_8859-1:1987': 1771cb0ef41Sopenharmony_ci case 'l1': 1781cb0ef41Sopenharmony_ci case 'latin1': 1791cb0ef41Sopenharmony_ci case 'us-ascii': 1801cb0ef41Sopenharmony_ci case 'windows-1252': 1811cb0ef41Sopenharmony_ci case 'x-cp1252': 1821cb0ef41Sopenharmony_ci return 'windows-1252' 1831cb0ef41Sopenharmony_ci case 'cp1253': 1841cb0ef41Sopenharmony_ci case 'windows-1253': 1851cb0ef41Sopenharmony_ci case 'x-cp1253': 1861cb0ef41Sopenharmony_ci return 'windows-1253' 1871cb0ef41Sopenharmony_ci case 'cp1254': 1881cb0ef41Sopenharmony_ci case 'csisolatin5': 1891cb0ef41Sopenharmony_ci case 'iso-8859-9': 1901cb0ef41Sopenharmony_ci case 'iso-ir-148': 1911cb0ef41Sopenharmony_ci case 'iso8859-9': 1921cb0ef41Sopenharmony_ci case 'iso88599': 1931cb0ef41Sopenharmony_ci case 'iso_8859-9': 1941cb0ef41Sopenharmony_ci case 'iso_8859-9:1989': 1951cb0ef41Sopenharmony_ci case 'l5': 1961cb0ef41Sopenharmony_ci case 'latin5': 1971cb0ef41Sopenharmony_ci case 'windows-1254': 1981cb0ef41Sopenharmony_ci case 'x-cp1254': 1991cb0ef41Sopenharmony_ci return 'windows-1254' 2001cb0ef41Sopenharmony_ci case 'cp1255': 2011cb0ef41Sopenharmony_ci case 'windows-1255': 2021cb0ef41Sopenharmony_ci case 'x-cp1255': 2031cb0ef41Sopenharmony_ci return 'windows-1255' 2041cb0ef41Sopenharmony_ci case 'cp1256': 2051cb0ef41Sopenharmony_ci case 'windows-1256': 2061cb0ef41Sopenharmony_ci case 'x-cp1256': 2071cb0ef41Sopenharmony_ci return 'windows-1256' 2081cb0ef41Sopenharmony_ci case 'cp1257': 2091cb0ef41Sopenharmony_ci case 'windows-1257': 2101cb0ef41Sopenharmony_ci case 'x-cp1257': 2111cb0ef41Sopenharmony_ci return 'windows-1257' 2121cb0ef41Sopenharmony_ci case 'cp1258': 2131cb0ef41Sopenharmony_ci case 'windows-1258': 2141cb0ef41Sopenharmony_ci case 'x-cp1258': 2151cb0ef41Sopenharmony_ci return 'windows-1258' 2161cb0ef41Sopenharmony_ci case 'x-mac-cyrillic': 2171cb0ef41Sopenharmony_ci case 'x-mac-ukrainian': 2181cb0ef41Sopenharmony_ci return 'x-mac-cyrillic' 2191cb0ef41Sopenharmony_ci case 'chinese': 2201cb0ef41Sopenharmony_ci case 'csgb2312': 2211cb0ef41Sopenharmony_ci case 'csiso58gb231280': 2221cb0ef41Sopenharmony_ci case 'gb2312': 2231cb0ef41Sopenharmony_ci case 'gb_2312': 2241cb0ef41Sopenharmony_ci case 'gb_2312-80': 2251cb0ef41Sopenharmony_ci case 'gbk': 2261cb0ef41Sopenharmony_ci case 'iso-ir-58': 2271cb0ef41Sopenharmony_ci case 'x-gbk': 2281cb0ef41Sopenharmony_ci return 'GBK' 2291cb0ef41Sopenharmony_ci case 'gb18030': 2301cb0ef41Sopenharmony_ci return 'gb18030' 2311cb0ef41Sopenharmony_ci case 'big5': 2321cb0ef41Sopenharmony_ci case 'big5-hkscs': 2331cb0ef41Sopenharmony_ci case 'cn-big5': 2341cb0ef41Sopenharmony_ci case 'csbig5': 2351cb0ef41Sopenharmony_ci case 'x-x-big5': 2361cb0ef41Sopenharmony_ci return 'Big5' 2371cb0ef41Sopenharmony_ci case 'cseucpkdfmtjapanese': 2381cb0ef41Sopenharmony_ci case 'euc-jp': 2391cb0ef41Sopenharmony_ci case 'x-euc-jp': 2401cb0ef41Sopenharmony_ci return 'EUC-JP' 2411cb0ef41Sopenharmony_ci case 'csiso2022jp': 2421cb0ef41Sopenharmony_ci case 'iso-2022-jp': 2431cb0ef41Sopenharmony_ci return 'ISO-2022-JP' 2441cb0ef41Sopenharmony_ci case 'csshiftjis': 2451cb0ef41Sopenharmony_ci case 'ms932': 2461cb0ef41Sopenharmony_ci case 'ms_kanji': 2471cb0ef41Sopenharmony_ci case 'shift-jis': 2481cb0ef41Sopenharmony_ci case 'shift_jis': 2491cb0ef41Sopenharmony_ci case 'sjis': 2501cb0ef41Sopenharmony_ci case 'windows-31j': 2511cb0ef41Sopenharmony_ci case 'x-sjis': 2521cb0ef41Sopenharmony_ci return 'Shift_JIS' 2531cb0ef41Sopenharmony_ci case 'cseuckr': 2541cb0ef41Sopenharmony_ci case 'csksc56011987': 2551cb0ef41Sopenharmony_ci case 'euc-kr': 2561cb0ef41Sopenharmony_ci case 'iso-ir-149': 2571cb0ef41Sopenharmony_ci case 'korean': 2581cb0ef41Sopenharmony_ci case 'ks_c_5601-1987': 2591cb0ef41Sopenharmony_ci case 'ks_c_5601-1989': 2601cb0ef41Sopenharmony_ci case 'ksc5601': 2611cb0ef41Sopenharmony_ci case 'ksc_5601': 2621cb0ef41Sopenharmony_ci case 'windows-949': 2631cb0ef41Sopenharmony_ci return 'EUC-KR' 2641cb0ef41Sopenharmony_ci case 'csiso2022kr': 2651cb0ef41Sopenharmony_ci case 'hz-gb-2312': 2661cb0ef41Sopenharmony_ci case 'iso-2022-cn': 2671cb0ef41Sopenharmony_ci case 'iso-2022-cn-ext': 2681cb0ef41Sopenharmony_ci case 'iso-2022-kr': 2691cb0ef41Sopenharmony_ci case 'replacement': 2701cb0ef41Sopenharmony_ci return 'replacement' 2711cb0ef41Sopenharmony_ci case 'unicodefffe': 2721cb0ef41Sopenharmony_ci case 'utf-16be': 2731cb0ef41Sopenharmony_ci return 'UTF-16BE' 2741cb0ef41Sopenharmony_ci case 'csunicode': 2751cb0ef41Sopenharmony_ci case 'iso-10646-ucs-2': 2761cb0ef41Sopenharmony_ci case 'ucs-2': 2771cb0ef41Sopenharmony_ci case 'unicode': 2781cb0ef41Sopenharmony_ci case 'unicodefeff': 2791cb0ef41Sopenharmony_ci case 'utf-16': 2801cb0ef41Sopenharmony_ci case 'utf-16le': 2811cb0ef41Sopenharmony_ci return 'UTF-16LE' 2821cb0ef41Sopenharmony_ci case 'x-user-defined': 2831cb0ef41Sopenharmony_ci return 'x-user-defined' 2841cb0ef41Sopenharmony_ci default: return 'failure' 2851cb0ef41Sopenharmony_ci } 2861cb0ef41Sopenharmony_ci} 2871cb0ef41Sopenharmony_ci 2881cb0ef41Sopenharmony_cimodule.exports = { 2891cb0ef41Sopenharmony_ci getEncoding 2901cb0ef41Sopenharmony_ci} 291