shell.js (1625B)
1 function GenericPartCreator(type) { 2 return str => ({ type, value: str }); 3 } 4 5 const NumberFormatParts = { 6 Nan: GenericPartCreator("nan"), 7 Inf: GenericPartCreator("infinity"), 8 Integer: GenericPartCreator("integer"), 9 Group: GenericPartCreator("group"), 10 Decimal: GenericPartCreator("decimal"), 11 Fraction: GenericPartCreator("fraction"), 12 MinusSign: GenericPartCreator("minusSign"), 13 PlusSign: GenericPartCreator("plusSign"), 14 PercentSign: GenericPartCreator("percentSign"), 15 Currency: GenericPartCreator("currency"), 16 Literal: GenericPartCreator("literal"), 17 ExponentSeparator: GenericPartCreator("exponentSeparator"), 18 ExponentMinusSign: GenericPartCreator("exponentMinusSign"), 19 ExponentInteger: GenericPartCreator("exponentInteger"), 20 Compact: GenericPartCreator("compact"), 21 Unit: GenericPartCreator("unit"), 22 }; 23 24 function GenericPartsCreator(unit) { 25 return (...values) => values.map(value => ({...value, unit})); 26 } 27 28 const DurationFormatParts = { 29 Year: GenericPartsCreator("year"), 30 Month: GenericPartsCreator("month"), 31 Week: GenericPartsCreator("week"), 32 Day: GenericPartsCreator("day"), 33 Hour: GenericPartsCreator("hour"), 34 Minute: GenericPartsCreator("minute"), 35 Second: GenericPartsCreator("second"), 36 Millisecond: GenericPartsCreator("millisecond"), 37 Microsecond: GenericPartsCreator("microsecond"), 38 Nanosecond: GenericPartsCreator("nanosecond"), 39 }; 40 41 function PartsToString(parts) { 42 return parts.reduce((acc, {value}) => acc + value, ""); 43 } 44 45 const units = [ 46 "years", "months", "weeks", "days", 47 "hours", "minutes", "seconds", 48 "milliseconds", "microseconds", "nanoseconds", 49 ];