MCPcopy
hub / github.com/formatjs/formatjs / parseUnicodeLanguageId

Function parseUnicodeLanguageId

packages/intl-getcanonicallocales/parser.ts:53–94  ·  view source on GitHub ↗
(
  chunks: string[] | string
)

Source from the content-addressed store, hash-verified

51}
52
53export function parseUnicodeLanguageId(
54 chunks: string[] | string
55): UnicodeLanguageId {
56 if (typeof chunks === 'string') {
57 chunks = chunks.split(SEPARATOR)
58 }
59 const lang = chunks.shift()
60 if (!lang) {
61 throw new RangeError('Missing unicode_language_subtag')
62 }
63 if (lang === 'root') {
64 return {lang: 'root', variants: []}
65 }
66 // unicode_language_subtag
67 if (!isUnicodeLanguageSubtag(lang)) {
68 throw new RangeError('Malformed unicode_language_subtag')
69 }
70 let script
71 // unicode_script_subtag
72 if (chunks.length && isUnicodeScriptSubtag(chunks[0])) {
73 script = chunks.shift()
74 }
75 let region
76 // unicode_region_subtag
77 if (chunks.length && isUnicodeRegionSubtag(chunks[0])) {
78 region = chunks.shift()
79 }
80 const variants: Record<string, any> = {}
81 while (chunks.length && isUnicodeVariantSubtag(chunks[0])) {
82 const variant: string = chunks.shift()!
83 if (variant in variants) {
84 throw new RangeError(`Duplicate variant "${variant}"`)
85 }
86 variants[variant] = 1
87 }
88 return {
89 lang,
90 script,
91 region,
92 variants: Object.keys(variants),
93 }
94}
95
96function parseUnicodeExtension(chunks: string[]): UnicodeExtension {
97 const keywords = []

Callers 13

applyOptionsToTagFunction · 0.90
addLikelySubtagsFunction · 0.90
removeLikelySubtagsFunction · 0.90
timeZonesOfLocaleFunction · 0.90
baseNameMethod · 0.90
languageMethod · 0.90
scriptMethod · 0.90
regionMethod · 0.90
variantsMethod · 0.90
parseUnicodeLocaleIdFunction · 0.85

Calls 4

isUnicodeLanguageSubtagFunction · 0.85
isUnicodeVariantSubtagFunction · 0.85
isUnicodeScriptSubtagFunction · 0.70
isUnicodeRegionSubtagFunction · 0.70

Tested by

no test coverage detected