MCPcopy
hub / github.com/formatjs/formatjs / parseDateTimeSkeleton

Function parseDateTimeSkeleton

packages/icu-skeleton-parser/date-time.ts:15–144  ·  view source on GitHub ↗
(
  skeleton: string
)

Source from the content-addressed store, hash-verified

13 * @param skeleton skeleton string
14 */
15export function parseDateTimeSkeleton(
16 skeleton: string
17): Intl.DateTimeFormatOptions {
18 const result: Intl.DateTimeFormatOptions = {}
19 skeleton.replace(DATE_TIME_REGEX, match => {
20 const len = match.length
21 switch (match[0]) {
22 // Era
23 case 'G':
24 result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short'
25 break
26 // Year
27 case 'y':
28 result.year = len === 2 ? '2-digit' : 'numeric'
29 break
30 case 'Y':
31 case 'u':
32 case 'U':
33 case 'r':
34 throw new RangeError(
35 '`Y/u/U/r` (year) patterns are not supported, use `y` instead'
36 )
37 // Quarter
38 case 'q':
39 case 'Q':
40 throw new RangeError('`q/Q` (quarter) patterns are not supported')
41 // Month
42 case 'M':
43 case 'L':
44 result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][
45 len - 1
46 ] as 'numeric'
47 break
48 // Week
49 case 'w':
50 case 'W':
51 throw new RangeError('`w/W` (week) patterns are not supported')
52 case 'd':
53 result.day = ['numeric', '2-digit'][len - 1] as 'numeric'
54 break
55 case 'D':
56 case 'F':
57 case 'g':
58 throw new RangeError(
59 '`D/F/g` (day) patterns are not supported, use `d` instead'
60 )
61 // Weekday
62 case 'E':
63 result.weekday = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short'
64 break
65 case 'e':
66 if (len < 4) {
67 throw new RangeError('`e..eee` (weekday) patterns are not supported')
68 }
69 result.weekday = ['short', 'long', 'narrow', 'short'][
70 len - 4
71 ] as 'short'
72 break

Callers 6

parseArgumentOptionsMethod · 0.90
index.test.tsFile · 0.50
core.tsFile · 0.50
loadDatesFieldsFunction · 0.50
skeleton.test.tsFile · 0.50

Calls

no outgoing calls

Tested by

no test coverage detected