зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1570370 - Part 7: Remove no longer used JS code generation parts from make_intl_data. r=jwalden
Also removes the "Native"-suffix from function names. Differential Revision: https://phabricator.services.mozilla.com/D40073 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
f33f8b0f24
Коммит
dd190dd631
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -1,371 +0,0 @@
|
|||
// Generated by make_intl_data.py. DO NOT EDIT.
|
||||
// Version: CLDR-35.1
|
||||
// URL: https://unicode.org/Public/cldr/35.1/core.zip
|
||||
|
||||
/**
|
||||
* Mapping from deprecated BCP 47 Unicode extension types to their preferred
|
||||
* values.
|
||||
*
|
||||
* Spec: https://www.unicode.org/reports/tr35/#Unicode_Locale_Extension_Data_Files
|
||||
*/
|
||||
var deprecatedUnicodeExtensionTypes = {
|
||||
ca: {
|
||||
// Ethiopic calendar, Amete Alem (epoch approx. 5493 B.C.E)
|
||||
"ethiopic-amete-alem": "ethioaa",
|
||||
|
||||
// Civil (algorithmic) Arabic calendar
|
||||
"islamicc": "islamic-civil",
|
||||
},
|
||||
kb: {
|
||||
// The second level to be backwards
|
||||
"yes": "true",
|
||||
},
|
||||
kc: {
|
||||
// The case level is inserted in front of tertiary
|
||||
"yes": "true",
|
||||
},
|
||||
kh: {
|
||||
// Hiragana to be sorted before all non-variable on quaternary level
|
||||
"yes": "true",
|
||||
},
|
||||
kk: {
|
||||
// Convert text into Normalization Form D before calculating collation weights
|
||||
"yes": "true",
|
||||
},
|
||||
kn: {
|
||||
// A sequence of decimal digits is sorted at primary level with its numeric value
|
||||
"yes": "true",
|
||||
},
|
||||
ks: {
|
||||
// The primary level
|
||||
"primary": "level1",
|
||||
|
||||
// The tertiary level
|
||||
"tertiary": "level3",
|
||||
},
|
||||
ms: {
|
||||
// UK System of measurement: feet, pints, etc.; pints are 20oz
|
||||
"imperial": "uksystem",
|
||||
},
|
||||
rg: {
|
||||
"cn11": "cnbj",
|
||||
"cn12": "cntj",
|
||||
"cn13": "cnhe",
|
||||
"cn14": "cnsx",
|
||||
"cn15": "cnmn",
|
||||
"cn21": "cnln",
|
||||
"cn22": "cnjl",
|
||||
"cn23": "cnhl",
|
||||
"cn31": "cnsh",
|
||||
"cn32": "cnjs",
|
||||
"cn33": "cnzj",
|
||||
"cn34": "cnah",
|
||||
"cn35": "cnfj",
|
||||
"cn36": "cnjx",
|
||||
"cn37": "cnsd",
|
||||
"cn41": "cnha",
|
||||
"cn42": "cnhb",
|
||||
"cn43": "cnhn",
|
||||
"cn44": "cngd",
|
||||
"cn45": "cngx",
|
||||
"cn46": "cnhi",
|
||||
"cn50": "cncq",
|
||||
"cn51": "cnsc",
|
||||
"cn52": "cngz",
|
||||
"cn53": "cnyn",
|
||||
"cn54": "cnxz",
|
||||
"cn61": "cnsn",
|
||||
"cn62": "cngs",
|
||||
"cn63": "cnqh",
|
||||
"cn64": "cnnx",
|
||||
"cn65": "cnxj",
|
||||
"cz10a": "cz110",
|
||||
"cz10b": "cz111",
|
||||
"cz10c": "cz112",
|
||||
"cz10d": "cz113",
|
||||
"cz10e": "cz114",
|
||||
"cz10f": "cz115",
|
||||
"cz611": "cz663",
|
||||
"cz612": "cz632",
|
||||
"cz613": "cz633",
|
||||
"cz614": "cz634",
|
||||
"cz615": "cz635",
|
||||
"cz621": "cz641",
|
||||
"cz622": "cz642",
|
||||
"cz623": "cz643",
|
||||
"cz624": "cz644",
|
||||
"cz626": "cz646",
|
||||
"cz627": "cz647",
|
||||
"czjc": "cz31",
|
||||
"czjm": "cz64",
|
||||
"czka": "cz41",
|
||||
"czkr": "cz52",
|
||||
"czli": "cz51",
|
||||
"czmo": "cz80",
|
||||
"czol": "cz71",
|
||||
"czpa": "cz53",
|
||||
"czpl": "cz32",
|
||||
"czpr": "cz10",
|
||||
"czst": "cz20",
|
||||
"czus": "cz42",
|
||||
"czvy": "cz63",
|
||||
"czzl": "cz72",
|
||||
"fra": "frges",
|
||||
"frb": "frnaq",
|
||||
"frc": "frara",
|
||||
"frd": "frbfc",
|
||||
"fre": "frbre",
|
||||
"frf": "frcvl",
|
||||
"frg": "frges",
|
||||
"frh": "frcor",
|
||||
"fri": "frbfc",
|
||||
"frj": "fridf",
|
||||
"frk": "frocc",
|
||||
"frl": "frnaq",
|
||||
"frm": "frges",
|
||||
"frn": "frocc",
|
||||
"fro": "frhdf",
|
||||
"frp": "frnor",
|
||||
"frq": "frnor",
|
||||
"frr": "frpdl",
|
||||
"frs": "frhdf",
|
||||
"frt": "frnaq",
|
||||
"fru": "frpac",
|
||||
"frv": "frara",
|
||||
"laxn": "laxs",
|
||||
"lud": "lucl",
|
||||
"lug": "luec",
|
||||
"lul": "luca",
|
||||
"mrnkc": "mr13",
|
||||
"nzn": "nzauk",
|
||||
"nzs": "nzcan",
|
||||
"omba": "ombj",
|
||||
"omsh": "omsj",
|
||||
"plds": "pl02",
|
||||
"plkp": "pl04",
|
||||
"pllb": "pl08",
|
||||
"plld": "pl10",
|
||||
"pllu": "pl06",
|
||||
"plma": "pl12",
|
||||
"plmz": "pl14",
|
||||
"plop": "pl16",
|
||||
"plpd": "pl20",
|
||||
"plpk": "pl18",
|
||||
"plpm": "pl22",
|
||||
"plsk": "pl26",
|
||||
"plsl": "pl24",
|
||||
"plwn": "pl28",
|
||||
"plwp": "pl30",
|
||||
"plzp": "pl32",
|
||||
"tteto": "tttob",
|
||||
"ttrcm": "ttmrc",
|
||||
"ttwto": "tttob",
|
||||
"twkhq": "twkhh",
|
||||
"twtnq": "twtnn",
|
||||
"twtpq": "twnwt",
|
||||
"twtxq": "twtxg",
|
||||
},
|
||||
sd: {
|
||||
"cn11": "cnbj",
|
||||
"cn12": "cntj",
|
||||
"cn13": "cnhe",
|
||||
"cn14": "cnsx",
|
||||
"cn15": "cnmn",
|
||||
"cn21": "cnln",
|
||||
"cn22": "cnjl",
|
||||
"cn23": "cnhl",
|
||||
"cn31": "cnsh",
|
||||
"cn32": "cnjs",
|
||||
"cn33": "cnzj",
|
||||
"cn34": "cnah",
|
||||
"cn35": "cnfj",
|
||||
"cn36": "cnjx",
|
||||
"cn37": "cnsd",
|
||||
"cn41": "cnha",
|
||||
"cn42": "cnhb",
|
||||
"cn43": "cnhn",
|
||||
"cn44": "cngd",
|
||||
"cn45": "cngx",
|
||||
"cn46": "cnhi",
|
||||
"cn50": "cncq",
|
||||
"cn51": "cnsc",
|
||||
"cn52": "cngz",
|
||||
"cn53": "cnyn",
|
||||
"cn54": "cnxz",
|
||||
"cn61": "cnsn",
|
||||
"cn62": "cngs",
|
||||
"cn63": "cnqh",
|
||||
"cn64": "cnnx",
|
||||
"cn65": "cnxj",
|
||||
"cz10a": "cz110",
|
||||
"cz10b": "cz111",
|
||||
"cz10c": "cz112",
|
||||
"cz10d": "cz113",
|
||||
"cz10e": "cz114",
|
||||
"cz10f": "cz115",
|
||||
"cz611": "cz663",
|
||||
"cz612": "cz632",
|
||||
"cz613": "cz633",
|
||||
"cz614": "cz634",
|
||||
"cz615": "cz635",
|
||||
"cz621": "cz641",
|
||||
"cz622": "cz642",
|
||||
"cz623": "cz643",
|
||||
"cz624": "cz644",
|
||||
"cz626": "cz646",
|
||||
"cz627": "cz647",
|
||||
"czjc": "cz31",
|
||||
"czjm": "cz64",
|
||||
"czka": "cz41",
|
||||
"czkr": "cz52",
|
||||
"czli": "cz51",
|
||||
"czmo": "cz80",
|
||||
"czol": "cz71",
|
||||
"czpa": "cz53",
|
||||
"czpl": "cz32",
|
||||
"czpr": "cz10",
|
||||
"czst": "cz20",
|
||||
"czus": "cz42",
|
||||
"czvy": "cz63",
|
||||
"czzl": "cz72",
|
||||
"fra": "frges",
|
||||
"frb": "frnaq",
|
||||
"frc": "frara",
|
||||
"frd": "frbfc",
|
||||
"fre": "frbre",
|
||||
"frf": "frcvl",
|
||||
"frg": "frges",
|
||||
"frh": "frcor",
|
||||
"fri": "frbfc",
|
||||
"frj": "fridf",
|
||||
"frk": "frocc",
|
||||
"frl": "frnaq",
|
||||
"frm": "frges",
|
||||
"frn": "frocc",
|
||||
"fro": "frhdf",
|
||||
"frp": "frnor",
|
||||
"frq": "frnor",
|
||||
"frr": "frpdl",
|
||||
"frs": "frhdf",
|
||||
"frt": "frnaq",
|
||||
"fru": "frpac",
|
||||
"frv": "frara",
|
||||
"laxn": "laxs",
|
||||
"lud": "lucl",
|
||||
"lug": "luec",
|
||||
"lul": "luca",
|
||||
"mrnkc": "mr13",
|
||||
"nzn": "nzauk",
|
||||
"nzs": "nzcan",
|
||||
"omba": "ombj",
|
||||
"omsh": "omsj",
|
||||
"plds": "pl02",
|
||||
"plkp": "pl04",
|
||||
"pllb": "pl08",
|
||||
"plld": "pl10",
|
||||
"pllu": "pl06",
|
||||
"plma": "pl12",
|
||||
"plmz": "pl14",
|
||||
"plop": "pl16",
|
||||
"plpd": "pl20",
|
||||
"plpk": "pl18",
|
||||
"plpm": "pl22",
|
||||
"plsk": "pl26",
|
||||
"plsl": "pl24",
|
||||
"plwn": "pl28",
|
||||
"plwp": "pl30",
|
||||
"plzp": "pl32",
|
||||
"tteto": "tttob",
|
||||
"ttrcm": "ttmrc",
|
||||
"ttwto": "tttob",
|
||||
"twkhq": "twkhh",
|
||||
"twtnq": "twtnn",
|
||||
"twtpq": "twnwt",
|
||||
"twtxq": "twtxg",
|
||||
},
|
||||
tz: {
|
||||
// Amundsen-Scott Station, South Pole
|
||||
"aqams": "nzakl",
|
||||
|
||||
// Chongqing, China
|
||||
"cnckg": "cnsha",
|
||||
|
||||
// Harbin, China
|
||||
"cnhrb": "cnsha",
|
||||
|
||||
// Kashgar, China
|
||||
"cnkhg": "cnurc",
|
||||
|
||||
// Havana, Cuba
|
||||
"cuba": "cuhav",
|
||||
|
||||
// Cairo, Egypt
|
||||
"egypt": "egcai",
|
||||
|
||||
// Dublin, Ireland
|
||||
"eire": "iedub",
|
||||
|
||||
// 5 hours behind UTC
|
||||
"est": "utcw05",
|
||||
|
||||
// Greenwich Mean Time
|
||||
"gmt0": "gmt",
|
||||
|
||||
// Hong Kong SAR China
|
||||
"hongkong": "hkhkg",
|
||||
|
||||
// 10 hours behind UTC
|
||||
"hst": "utcw10",
|
||||
|
||||
// Reykjavik, Iceland
|
||||
"iceland": "isrey",
|
||||
|
||||
// Tehran, Iran
|
||||
"iran": "irthr",
|
||||
|
||||
// Jerusalem
|
||||
"israel": "jeruslm",
|
||||
|
||||
// Jamaica
|
||||
"jamaica": "jmkin",
|
||||
|
||||
// Tokyo, Japan
|
||||
"japan": "jptyo",
|
||||
|
||||
// Tripoli, Libya
|
||||
"libya": "lytip",
|
||||
|
||||
// 7 hours behind UTC
|
||||
"mst": "utcw07",
|
||||
|
||||
// Denver, United States
|
||||
"navajo": "usden",
|
||||
|
||||
// Warsaw, Poland
|
||||
"poland": "plwaw",
|
||||
|
||||
// Lisbon, Portugal
|
||||
"portugal": "ptlis",
|
||||
|
||||
// Shanghai, China
|
||||
"prc": "cnsha",
|
||||
|
||||
// Taipei, Taiwan
|
||||
"roc": "twtpe",
|
||||
|
||||
// Seoul, South Korea
|
||||
"rok": "krsel",
|
||||
|
||||
// Istanbul, Turkey
|
||||
"turkey": "trist",
|
||||
|
||||
// UTC (Coordinated Universal Time)
|
||||
"uct": "utc",
|
||||
|
||||
// Shiprock (Navajo), United States
|
||||
"usnavajo": "usden",
|
||||
|
||||
// UTC (Coordinated Universal Time)
|
||||
"zulu": "utc",
|
||||
},
|
||||
};
|
|
@ -14,9 +14,9 @@
|
|||
|
||||
Target "langtags":
|
||||
This script extracts information about mappings between deprecated and
|
||||
current Unicode BCP 47 locale identifiers from CLDR and converts it to
|
||||
JavaScript object definitions in LangTagMappingsGenerated.js. The
|
||||
definitions are used in Intl.js.
|
||||
current Unicode BCP 47 locale identifiers from CLDR and converts it to C++
|
||||
mapping code in LanguageTagGenerated.cpp. The code is used in
|
||||
LanguageTag.cpp.
|
||||
|
||||
|
||||
Target "tzdata":
|
||||
|
@ -105,293 +105,6 @@ def writeMappingsVar(println, mapping, name, description, source, url):
|
|||
println(u"};")
|
||||
|
||||
|
||||
def writeUpdateLocaleIdMappingsFunction(println,
|
||||
complex_language_mappings,
|
||||
complex_region_mappings,
|
||||
description, source, url):
|
||||
""" Writes a function definition that performs language tag mapping. """
|
||||
println(u"")
|
||||
writeMappingHeader(println, description, source, url)
|
||||
println(u"""\
|
||||
/* eslint-disable complexity */
|
||||
function updateLocaleIdMappings(tag) {
|
||||
assert(IsObject(tag), "tag is an object");
|
||||
|
||||
// Replace deprecated language tags with their preferred values.
|
||||
var language = tag.language;
|
||||
if (hasOwn(language, languageMappings)) {
|
||||
tag.language = languageMappings[language];
|
||||
} else if (hasOwn(language, complexLanguageMappings)) {
|
||||
switch (language) {""")
|
||||
|
||||
# Merge duplicate language entries.
|
||||
language_aliases = {}
|
||||
for (deprecated_language, (language, script, region)) in (
|
||||
sorted(complex_language_mappings.items(), key=itemgetter(0))
|
||||
):
|
||||
key = (language, script, region)
|
||||
if key not in language_aliases:
|
||||
language_aliases[key] = []
|
||||
else:
|
||||
language_aliases[key].append(deprecated_language)
|
||||
|
||||
for (deprecated_language, (language, script, region)) in (
|
||||
sorted(complex_language_mappings.items(), key=itemgetter(0))
|
||||
):
|
||||
key = (language, script, region)
|
||||
if deprecated_language in language_aliases[key]:
|
||||
continue
|
||||
|
||||
for lang in [deprecated_language] + language_aliases[key]:
|
||||
println(u"""
|
||||
case "{}":
|
||||
""".format(lang).rstrip().strip("\n"))
|
||||
|
||||
println(u"""
|
||||
tag.language = "{}";
|
||||
""".format(language).rstrip().strip("\n"))
|
||||
if script is not None:
|
||||
println(u"""
|
||||
if (tag.script === undefined)
|
||||
tag.script = "{}";
|
||||
""".format(script).rstrip().strip("\n"))
|
||||
if region is not None:
|
||||
println(u"""
|
||||
if (tag.region === undefined)
|
||||
tag.region = "{}";
|
||||
""".format(region).rstrip().strip("\n"))
|
||||
println(u"""
|
||||
break;
|
||||
""".rstrip().strip("\n"))
|
||||
|
||||
println(u"""
|
||||
default:
|
||||
assert(false, "language not handled: " + language);
|
||||
}
|
||||
}
|
||||
|
||||
// No script replacements are currently present.
|
||||
|
||||
// Replace deprecated subtags with their preferred values.
|
||||
var region = tag.region;
|
||||
if (region !== undefined) {
|
||||
if (hasOwn(region, regionMappings)) {
|
||||
tag.region = regionMappings[region];
|
||||
} else if (hasOwn(region, complexRegionMappings)) {
|
||||
switch (region) {""".lstrip("\n"))
|
||||
|
||||
# |non_default_replacements| is a list and hence not hashable. Convert it
|
||||
# to a string to get a proper hashable value.
|
||||
def hash_key(default, non_default_replacements):
|
||||
return (default, str(sorted(str(v) for v in non_default_replacements)))
|
||||
|
||||
# Merge duplicate region entries.
|
||||
region_aliases = {}
|
||||
for (deprecated_region, (default, non_default_replacements)) in (
|
||||
sorted(complex_region_mappings.items(), key=itemgetter(0))
|
||||
):
|
||||
key = hash_key(default, non_default_replacements)
|
||||
if key not in region_aliases:
|
||||
region_aliases[key] = []
|
||||
else:
|
||||
region_aliases[key].append(deprecated_region)
|
||||
|
||||
for (deprecated_region, (default, non_default_replacements)) in (
|
||||
sorted(complex_region_mappings.items(), key=itemgetter(0))
|
||||
):
|
||||
key = hash_key(default, non_default_replacements)
|
||||
if deprecated_region in region_aliases[key]:
|
||||
continue
|
||||
|
||||
for region in [deprecated_region] + region_aliases[key]:
|
||||
println(u"""
|
||||
case "{}":
|
||||
""".format(region).rstrip().strip("\n"))
|
||||
|
||||
for (language, script, region) in sorted(non_default_replacements, key=itemgetter(0)):
|
||||
if script is None:
|
||||
println(u"""
|
||||
if (tag.language === "{}") {{
|
||||
""".format(language).rstrip().strip("\n"))
|
||||
else:
|
||||
println(u"""
|
||||
if (tag.language === "{}" && tag.script === "{}") {{
|
||||
""".format(language, script).rstrip().strip("\n"))
|
||||
println(u"""
|
||||
tag.region = "{}";
|
||||
break;
|
||||
}}
|
||||
""".format(region).rstrip().strip("\n"))
|
||||
|
||||
println(u"""
|
||||
tag.region = "{}";
|
||||
break;
|
||||
""".format(default).rstrip().strip("\n"))
|
||||
|
||||
println(u"""
|
||||
default:
|
||||
assert(false, "region not handled: " + region);
|
||||
}
|
||||
}
|
||||
|
||||
// No variant replacements are currently present.
|
||||
// No extension replacements are currently present.
|
||||
// Private use sequences are left as is.
|
||||
|
||||
}
|
||||
}
|
||||
/* eslint-enable complexity */
|
||||
""".strip("\n"))
|
||||
|
||||
|
||||
def writeGrandfatheredMappingsFunction(println,
|
||||
grandfathered_mappings,
|
||||
description, source, url):
|
||||
""" Writes a function definition that maps grandfathered language tags. """
|
||||
println(u"")
|
||||
writeMappingHeader(println, description, source, url)
|
||||
println(u"""\
|
||||
function updateGrandfatheredMappings(tag) {
|
||||
assert(IsObject(tag), "tag is an object");
|
||||
|
||||
// We're mapping regular grandfathered tags to non-grandfathered form here.
|
||||
// Other tags remain unchanged.
|
||||
//
|
||||
// regular = "art-lojban"
|
||||
// / "cel-gaulish"
|
||||
// / "no-bok"
|
||||
// / "no-nyn"
|
||||
// / "zh-guoyu"
|
||||
// / "zh-hakka"
|
||||
// / "zh-min"
|
||||
// / "zh-min-nan"
|
||||
// / "zh-xiang"
|
||||
//
|
||||
// Therefore we can quickly exclude most tags by checking every
|
||||
// |unicode_locale_id| subcomponent for characteristics not shared by any of
|
||||
// the regular grandfathered (RG) tags:
|
||||
//
|
||||
// * Real-world |unicode_language_subtag|s are all two or three letters,
|
||||
// so don't waste time running a useless |language.length > 3| fast-path.
|
||||
// * No RG tag has a "script"-looking component.
|
||||
// * No RG tag has a "region"-looking component.
|
||||
// * The RG tags that match |unicode_locale_id| (art-lojban, cel-gaulish,
|
||||
// zh-guoyu, zh-hakka, zh-xiang) have exactly one "variant". (no-bok,
|
||||
// no-nyn, zh-min, and zh-min-nan require BCP47's extlang subtag
|
||||
// that |unicode_locale_id| doesn't support.)
|
||||
// * No RG tag contains |extensions| or |pu_extensions|.
|
||||
if (tag.script !== undefined ||
|
||||
tag.region !== undefined ||
|
||||
tag.variants.length !== 1 ||
|
||||
tag.extensions.length !== 0 ||
|
||||
tag.privateuse !== undefined)
|
||||
{
|
||||
return;
|
||||
}""")
|
||||
|
||||
# From Unicode BCP 47 locale identifier <https://unicode.org/reports/tr35/>.
|
||||
#
|
||||
# Doesn't allow any 'extensions' subtags.
|
||||
re_unicode_locale_id = re.compile(
|
||||
r"""
|
||||
^
|
||||
# unicode_language_id = unicode_language_subtag
|
||||
# unicode_language_subtag = alpha{2,3} | alpha{5,8}
|
||||
(?P<language>[a-z]{2,3}|[a-z]{5,8})
|
||||
|
||||
# (sep unicode_script_subtag)?
|
||||
# unicode_script_subtag = alpha{4}
|
||||
(?:-(?P<script>[a-z]{4}))?
|
||||
|
||||
# (sep unicode_region_subtag)?
|
||||
# unicode_region_subtag = (alpha{2} | digit{3})
|
||||
(?:-(?P<region>([a-z]{2}|[0-9]{3})))?
|
||||
|
||||
# (sep unicode_variant_subtag)*
|
||||
# unicode_variant_subtag = (alphanum{5,8} | digit alphanum{3})
|
||||
(?P<variants>(-([a-z0-9]{5,8}|[0-9][a-z0-9]{3}))+)?
|
||||
|
||||
# pu_extensions?
|
||||
# pu_extensions = sep [xX] (sep alphanum{1,8})+
|
||||
(?:-(?P<privateuse>x(-[a-z0-9]{1,8})+))?
|
||||
$
|
||||
""", re.IGNORECASE | re.VERBOSE)
|
||||
|
||||
is_first = True
|
||||
|
||||
for (tag, modern) in sorted(grandfathered_mappings.items(), key=itemgetter(0)):
|
||||
tag_match = re_unicode_locale_id.match(tag)
|
||||
assert tag_match is not None
|
||||
|
||||
tag_language = tag_match.group("language")
|
||||
assert tag_match.group("script") is None, (
|
||||
"{} does not contain a script subtag".format(tag))
|
||||
assert tag_match.group("region") is None, (
|
||||
"{} does not contain a region subtag".format(tag))
|
||||
tag_variants = tag_match.group("variants")
|
||||
assert tag_variants is not None, (
|
||||
"{} contains a variant subtag".format(tag))
|
||||
assert tag_match.group("privateuse") is None, (
|
||||
"{} does not contain a privateuse subtag".format(tag))
|
||||
|
||||
tag_variant = tag_variants[1:]
|
||||
assert "-" not in tag_variant, (
|
||||
"{} contains only a single variant".format(tag))
|
||||
|
||||
modern_match = re_unicode_locale_id.match(modern)
|
||||
assert modern_match is not None
|
||||
|
||||
modern_language = modern_match.group("language")
|
||||
modern_script = modern_match.group("script")
|
||||
modern_region = modern_match.group("region")
|
||||
modern_variants = modern_match.group("variants")
|
||||
modern_privateuse = modern_match.group("privateuse")
|
||||
|
||||
println(u"""
|
||||
// {} -> {}
|
||||
""".format(tag, modern).rstrip())
|
||||
|
||||
println(u"""
|
||||
{}if (tag.language === "{}" && tag.variants[0] === "{}") {{
|
||||
""".format("" if is_first else "else ", tag_language, tag_variant).rstrip().strip("\n"))
|
||||
|
||||
is_first = False
|
||||
|
||||
println(u"""
|
||||
tag.language = "{}";
|
||||
""".format(modern_language).rstrip().strip("\n"))
|
||||
|
||||
if modern_script is not None:
|
||||
println(u"""
|
||||
tag.script = "{}";
|
||||
""".format(modern_script).rstrip().strip("\n"))
|
||||
|
||||
if modern_region is not None:
|
||||
println(u"""
|
||||
tag.region = "{}";
|
||||
""".format(modern_region).rstrip().strip("\n"))
|
||||
|
||||
if modern_variants is not None:
|
||||
println(u"""
|
||||
tag.variants = {};
|
||||
""".format(sorted(modern_variants[1:].split("-"))).rstrip().strip("\n"))
|
||||
else:
|
||||
println(u"""
|
||||
tag.variants.length = 0;
|
||||
""".rstrip().strip("\n"))
|
||||
|
||||
if modern_privateuse is not None:
|
||||
println(u"""
|
||||
tag.privateuse = "{}";
|
||||
""".format(modern_privateuse).rstrip().strip("\n"))
|
||||
|
||||
println(u"""
|
||||
}""".rstrip().strip("\n"))
|
||||
|
||||
println(u"""
|
||||
}""".lstrip("\n"))
|
||||
|
||||
|
||||
def writeMappingsBinarySearch(println, fn_name, type_name, name, validate_fn, mappings,
|
||||
tag_maxlength, description, source, url):
|
||||
""" Emit code to perform a binary search on language tag subtags.
|
||||
|
@ -508,8 +221,8 @@ bool js::intl::LanguageTag::{0}({1} {2}) {{
|
|||
}""".lstrip("\n"))
|
||||
|
||||
|
||||
def writeComplexLanguageTagMappingsNative(println, complex_language_mappings,
|
||||
description, source, url):
|
||||
def writeComplexLanguageTagMappings(println, complex_language_mappings,
|
||||
description, source, url):
|
||||
println(u"")
|
||||
writeMappingHeader(println, description, source, url)
|
||||
println(u"""
|
||||
|
@ -567,8 +280,8 @@ void js::intl::LanguageTag::performComplexLanguageMappings() {
|
|||
""".strip("\n"))
|
||||
|
||||
|
||||
def writeComplexRegionTagMappingsNative(println, complex_region_mappings,
|
||||
description, source, url):
|
||||
def writeComplexRegionTagMappings(println, complex_region_mappings,
|
||||
description, source, url):
|
||||
println(u"")
|
||||
writeMappingHeader(println, description, source, url)
|
||||
println(u"""
|
||||
|
@ -651,8 +364,8 @@ void js::intl::LanguageTag::performComplexRegionMappings() {
|
|||
""".strip("\n"))
|
||||
|
||||
|
||||
def writeGrandfatheredMappingsFunctionNative(println, grandfathered_mappings,
|
||||
description, source, url):
|
||||
def writeGrandfatheredMappingsFunction(println, grandfathered_mappings,
|
||||
description, source, url):
|
||||
""" Writes a function definition that maps grandfathered language tags. """
|
||||
println(u"")
|
||||
writeMappingHeader(println, description, source, url)
|
||||
|
@ -1067,38 +780,6 @@ def readSupplementalData(supplemental_dtd_file, supplemental_metadata_file, like
|
|||
def writeCLDRLanguageTagData(println, data, url):
|
||||
""" Writes the language tag data to the Intl data file. """
|
||||
|
||||
source = u"CLDR Supplemental Data, version {}".format(data["version"])
|
||||
grandfathered_mappings = data["grandfatheredMappings"]
|
||||
language_mappings = data["languageMappings"]
|
||||
complex_language_mappings = data["complexLanguageMappings"]
|
||||
region_mappings = data["regionMappings"]
|
||||
complex_region_mappings = data["complexRegionMappings"]
|
||||
|
||||
writeMappingsVar(println, grandfathered_mappings, "grandfatheredMappings",
|
||||
"Mappings from grandfathered tags to preferred values.", source, url)
|
||||
writeMappingsVar(println, language_mappings, "languageMappings",
|
||||
"Mappings from language subtags to preferred values.", source, url)
|
||||
writeMappingsVar(println, {key: True for key in complex_language_mappings},
|
||||
"complexLanguageMappings",
|
||||
"Language subtags with complex mappings.", source, url)
|
||||
writeMappingsVar(println, region_mappings, "regionMappings",
|
||||
"Mappings from region subtags to preferred values.", source, url)
|
||||
writeMappingsVar(println, {key: True for key in complex_region_mappings},
|
||||
"complexRegionMappings",
|
||||
"Region subtags with complex mappings.", source, url)
|
||||
|
||||
writeUpdateLocaleIdMappingsFunction(println, complex_language_mappings,
|
||||
complex_region_mappings,
|
||||
"Canonicalize Unicode BCP 47 locale identifiers.",
|
||||
source, url)
|
||||
writeGrandfatheredMappingsFunction(println, grandfathered_mappings,
|
||||
"Canonicalize grandfathered locale identifiers.",
|
||||
source, url)
|
||||
|
||||
|
||||
def writeCLDRLanguageTagDataNative(println, data, url):
|
||||
""" Writes the language tag data to the Intl data file. """
|
||||
|
||||
println(generatedFileWarning)
|
||||
|
||||
println(u"""
|
||||
|
@ -1186,14 +867,14 @@ static inline const char* SearchReplacement(
|
|||
complex_region_mappings.keys(), region_maxlength,
|
||||
"Region subtags with complex mappings.", source, url)
|
||||
|
||||
writeComplexLanguageTagMappingsNative(println, complex_language_mappings,
|
||||
"Language subtags with complex mappings.", source, url)
|
||||
writeComplexRegionTagMappingsNative(println, complex_region_mappings,
|
||||
"Region subtags with complex mappings.", source, url)
|
||||
writeComplexLanguageTagMappings(println, complex_language_mappings,
|
||||
"Language subtags with complex mappings.", source, url)
|
||||
writeComplexRegionTagMappings(println, complex_region_mappings,
|
||||
"Region subtags with complex mappings.", source, url)
|
||||
|
||||
writeGrandfatheredMappingsFunctionNative(println, grandfathered_mappings,
|
||||
"Canonicalize grandfathered locale identifiers.", source,
|
||||
url)
|
||||
writeGrandfatheredMappingsFunction(println, grandfathered_mappings,
|
||||
"Canonicalize grandfathered locale identifiers.", source,
|
||||
url)
|
||||
|
||||
|
||||
def writeCLDRLanguageTagLikelySubtagsTest(println, data, url):
|
||||
|
@ -1322,7 +1003,7 @@ if (typeof reportCompare === "function")
|
|||
|
||||
|
||||
def updateCLDRLangTags(args):
|
||||
""" Update the LangTagMappingsCLDRGenerated.js file. """
|
||||
""" Update the LanguageTagGenerated.cpp file. """
|
||||
url = args.url
|
||||
branch = args.branch
|
||||
revision = args.revision
|
||||
|
@ -1404,17 +1085,8 @@ def updateCLDRLangTags(args):
|
|||
print("Writing Intl data...")
|
||||
with io.open(out, mode="w", encoding="utf-8", newline="") as f:
|
||||
println = partial(print, file=f)
|
||||
|
||||
println(u"// Generated by make_intl_data.py. DO NOT EDIT.")
|
||||
writeCLDRLanguageTagData(println, data, url)
|
||||
|
||||
print("Writing Intl data...")
|
||||
native_out = "LanguageTagGenerated.cpp"
|
||||
# native_out = os.path.splitext(out)[0] + ".cpp"
|
||||
with io.open(native_out, mode="w", encoding="utf-8", newline="") as f:
|
||||
println = partial(print, file=f)
|
||||
writeCLDRLanguageTagDataNative(println, data, url)
|
||||
|
||||
print("Writing Intl test data...")
|
||||
test_file = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||
"../../tests/non262/Intl/Locale/likely-subtags-generated.js")
|
||||
|
@ -2696,7 +2368,7 @@ if __name__ == "__main__":
|
|||
parser_cldr_tags.add_argument("--revision", default="HEAD",
|
||||
help="Git revision (default: %(default)s)")
|
||||
parser_cldr_tags.add_argument("--out",
|
||||
default="LangTagMappingsGenerated.js",
|
||||
default="LanguageTagGenerated.cpp",
|
||||
help="Output file (default: %(default)s)")
|
||||
parser_cldr_tags.add_argument("files",
|
||||
nargs="*",
|
||||
|
|
|
@ -481,11 +481,9 @@ selfhosted_inputs = [
|
|||
'builtin/intl/CurrencyDataGenerated.js',
|
||||
'builtin/intl/DateTimeFormat.js',
|
||||
'builtin/intl/IntlObject.js',
|
||||
'builtin/intl/LangTagMappingsGenerated.js',
|
||||
'builtin/intl/NumberFormat.js',
|
||||
'builtin/intl/PluralRules.js',
|
||||
'builtin/intl/RelativeTimeFormat.js',
|
||||
'builtin/intl/UnicodeExtensionsGenerated.js',
|
||||
] if CONFIG['ENABLE_INTL_API'] else [])
|
||||
|
||||
# Prepare self-hosted JS code for embedding
|
||||
|
|
Загрузка…
Ссылка в новой задаче