@pbkware/dot-net-date-number-formatting 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,6 @@
1
1
  import { Err, Ok, Result } from "@pbkware/js-utils";
2
2
  import { DotNetLocaleSettings } from "./locale-settings.js";
3
- import {
4
- DotNetNumberStyleId,
5
- DotNetNumberStyleSet,
6
- DotNetNumberStyles,
7
- } from "./number-style.js";
3
+ import { DotNetNumberStyles } from "./number-styles.js";
8
4
 
9
5
  type ElementType =
10
6
  | "standard"
@@ -64,21 +60,14 @@ export class DotNetNumberFormatter {
64
60
  private sections: FormatSection[] = [];
65
61
 
66
62
  /**
67
- * The set of {@link DotNetNumberStyleId} flags that control which number formats are allowed during parsing.
63
+ * The {@link (DotNetNumberStyles:variable)} that control which number formats are allowed during parsing.
68
64
  *
69
65
  * @example
70
66
  * ```typescript
71
- * // Use predefined styles
72
- * formatter.styles = DotNetNumberStyles.number;
73
- *
74
- * // Or combine individual flags
75
- * formatter.styles = new Set([
76
- * DotNetNumberStyleId.AllowLeadingSign,
77
- * DotNetNumberStyleId.AllowDecimalPoint
78
- * ]);
67
+ * formatter.styles = DotNetNumberStyles.allowLeadingSign | DotNetNumberStyles.allowDecimalPoint;
79
68
  * ```
80
69
  */
81
- styles: DotNetNumberStyleSet = new Set(DotNetNumberStyles.number);
70
+ styles: DotNetNumberStyles = DotNetNumberStyles.number;
82
71
 
83
72
  /**
84
73
  * The locale settings that determine decimal/thousands separators and other culture-specific formatting.
@@ -737,17 +726,28 @@ export class DotNetNumberFormatter {
737
726
  let unstyled = value;
738
727
 
739
728
  if (
740
- this.styles.has(DotNetNumberStyleId.AllowLeadingWhite) &&
741
- this.styles.has(DotNetNumberStyleId.AllowTrailingWhite)
729
+ (this.styles &
730
+ (DotNetNumberStyles.allowLeadingWhite |
731
+ DotNetNumberStyles.allowTrailingWhite)) >
732
+ 0
742
733
  ) {
743
734
  unstyled = unstyled.trim();
744
- } else if (this.styles.has(DotNetNumberStyleId.AllowLeadingWhite)) {
735
+ } else if (
736
+ (this.styles & DotNetNumberStyles.allowLeadingWhite) ===
737
+ DotNetNumberStyles.allowLeadingWhite
738
+ ) {
745
739
  unstyled = unstyled.trimStart();
746
- } else if (this.styles.has(DotNetNumberStyleId.AllowTrailingWhite)) {
740
+ } else if (
741
+ (this.styles & DotNetNumberStyles.allowTrailingWhite) ===
742
+ DotNetNumberStyles.allowTrailingWhite
743
+ ) {
747
744
  unstyled = unstyled.trimEnd();
748
745
  }
749
746
 
750
- if (this.styles.has(DotNetNumberStyleId.AllowThousands)) {
747
+ if (
748
+ (this.styles & DotNetNumberStyles.allowThousands) ===
749
+ DotNetNumberStyles.allowThousands
750
+ ) {
751
751
  unstyled = unstyled.split(this.localeSettings.thousandSeparator).join("");
752
752
  }
753
753
 
@@ -764,7 +764,8 @@ export class DotNetNumberFormatter {
764
764
  }
765
765
 
766
766
  if (
767
- this.styles.has(DotNetNumberStyleId.AllowCurrencySymbol) &&
767
+ (this.styles & DotNetNumberStyles.allowCurrencySymbol) ===
768
+ DotNetNumberStyles.allowCurrencySymbol &&
768
769
  unstyled.startsWith(this.localeSettings.currencyString)
769
770
  ) {
770
771
  unstyled = unstyled.slice(this.localeSettings.currencyString.length);
@@ -776,13 +777,17 @@ export class DotNetNumberFormatter {
776
777
 
777
778
  let negated = false;
778
779
  if (
779
- this.styles.has(DotNetNumberStyleId.AllowParentheses) &&
780
+ (this.styles & DotNetNumberStyles.allowParentheses) ===
781
+ DotNetNumberStyles.allowParentheses &&
780
782
  unstyled.startsWith("(") &&
781
783
  unstyled.endsWith(")")
782
784
  ) {
783
785
  unstyled = unstyled.slice(1, -1);
784
786
  negated = true;
785
- } else if (this.styles.has(DotNetNumberStyleId.AllowTrailingSign)) {
787
+ } else if (
788
+ (this.styles & DotNetNumberStyles.allowTrailingSign) ===
789
+ DotNetNumberStyles.allowTrailingSign
790
+ ) {
786
791
  if (unstyled.endsWith("+")) {
787
792
  unstyled = unstyled.slice(0, -1);
788
793
  negated = false;
@@ -867,8 +872,14 @@ export class DotNetIntegerFormatter extends DotNetNumberFormatter {
867
872
 
868
873
  let { unstyled: text, negated } = unstyled.value;
869
874
 
870
- if (this.styles.has(DotNetNumberStyleId.AllowHexSpecifier)) {
871
- if (this.styles.has(DotNetNumberStyleId.AllowLeadingSign)) {
875
+ if (
876
+ (this.styles & DotNetNumberStyles.allowHexSpecifier) ===
877
+ DotNetNumberStyles.allowHexSpecifier
878
+ ) {
879
+ if (
880
+ (this.styles & DotNetNumberStyles.allowLeadingSign) ===
881
+ DotNetNumberStyles.allowLeadingSign
882
+ ) {
872
883
  if (text.startsWith("+")) {
873
884
  text = text.slice(1);
874
885
  } else if (text.startsWith("-")) {
@@ -887,16 +898,19 @@ export class DotNetIntegerFormatter extends DotNetNumberFormatter {
887
898
 
888
899
  const hasLeadingSign = text.startsWith("+") || text.startsWith("-");
889
900
  if (
890
- !this.styles.has(DotNetNumberStyleId.AllowLeadingSign) &&
901
+ (this.styles & DotNetNumberStyles.allowLeadingSign) !==
902
+ DotNetNumberStyles.allowLeadingSign &&
891
903
  hasLeadingSign
892
904
  ) {
893
905
  return new Err("Unallowed leading sign character");
894
906
  }
895
907
 
896
908
  const parseAsFloat =
897
- (this.styles.has(DotNetNumberStyleId.AllowExponent) &&
909
+ ((this.styles & DotNetNumberStyles.allowExponent) ===
910
+ DotNetNumberStyles.allowExponent &&
898
911
  this.hasExponentChar(text)) ||
899
- (this.styles.has(DotNetNumberStyleId.AllowDecimalPoint) &&
912
+ ((this.styles & DotNetNumberStyles.allowDecimalPoint) ===
913
+ DotNetNumberStyles.allowDecimalPoint &&
900
914
  this.hasDecimalChar(text));
901
915
 
902
916
  if (parseAsFloat) {
@@ -1000,7 +1014,8 @@ export class DotNetFloatFormatter extends DotNetNumberFormatter {
1000
1014
  const hasLeadingSign = text.startsWith("+") || text.startsWith("-");
1001
1015
 
1002
1016
  if (
1003
- !this.styles.has(DotNetNumberStyleId.AllowLeadingSign) &&
1017
+ (this.styles & DotNetNumberStyles.allowLeadingSign) !==
1018
+ DotNetNumberStyles.allowLeadingSign &&
1004
1019
  hasLeadingSign
1005
1020
  ) {
1006
1021
  return new Err("Unallowed leading sign character");
@@ -1009,7 +1024,8 @@ export class DotNetFloatFormatter extends DotNetNumberFormatter {
1009
1024
  // The format string only affects output formatting, not input parsing capabilities.
1010
1025
  // Scientific notation like "1.23e5" should always be parseable.
1011
1026
  if (
1012
- !this.styles.has(DotNetNumberStyleId.AllowDecimalPoint) &&
1027
+ (this.styles & DotNetNumberStyles.allowDecimalPoint) !==
1028
+ DotNetNumberStyles.allowDecimalPoint &&
1013
1029
  this.hasDecimalChar(text)
1014
1030
  ) {
1015
1031
  return new Err("Unallowed decimal point character");
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Individual style flags that control which number formats are allowed during parsing.
3
+ *
4
+ * These flags can be combined to create custom parsing behavior.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // Combine individual flags
9
+ * formatter.styles = new Set([
10
+ * DotNetNumberStyleFlags.AllowLeadingSign,
11
+ * DotNetNumberStyleFlags.AllowDecimalPoint,
12
+ * DotNetNumberStyleFlags.AllowThousands
13
+ * ]);
14
+ * ```
15
+ *
16
+ * @public
17
+ * @category Number Styles
18
+ */
19
+ export const DotNetNumberStyleFlags = {
20
+ /** Allow leading whitespace characters. */
21
+ allowLeadingWhite: 1,
22
+
23
+ /** Allow trailing whitespace characters. */
24
+ allowTrailingWhite: 2,
25
+
26
+ /** Allow a leading plus (+) or minus (-) sign. */
27
+ allowLeadingSign: 4,
28
+
29
+ /** Allow a trailing plus (+) or minus (-) sign. */
30
+ allowTrailingSign: 8,
31
+
32
+ /** Allow parentheses to indicate negative numbers. */
33
+ allowParentheses: 16,
34
+
35
+ /** Allow decimal point in the number string. */
36
+ allowDecimalPoint: 32,
37
+
38
+ /** Allow thousands separator characters. */
39
+ allowThousands: 64,
40
+
41
+ /** Allow exponential notation (e.g., 1.23e+10). */
42
+ allowExponent: 128,
43
+
44
+ /** Allow currency symbol in the number string. */
45
+ allowCurrencySymbol: 256,
46
+
47
+ /** Parse the number as hexadecimal. */
48
+ allowHexSpecifier: 512,
49
+ } as const;
50
+
51
+ /**
52
+ * A set of {@link (DotNetNumberStyleFlags:variable)} flags.
53
+ *
54
+ * @public
55
+ * @category Number Styles
56
+ */
57
+ export type DotNetNumberStyleFlags =
58
+ (typeof DotNetNumberStyleFlags)[keyof typeof DotNetNumberStyleFlags];
59
+
60
+ /**
61
+ * Predefined number style combinations for common parsing scenarios.
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * // Use predefined style
66
+ * formatter.styles = DotNetNumberStyles.number;
67
+ * formatter.tryFromString('1,234.56'); // Parses successfully
68
+ *
69
+ * // Use currency style
70
+ * formatter.styles = DotNetNumberStyles.currency;
71
+ * formatter.tryFromString('$1,234.56'); // Parses successfully
72
+ * ```
73
+ *
74
+ * @public
75
+ * @category Number Styles
76
+ */
77
+ export const DotNetNumberStyles = {
78
+ /** No styles - only basic digits allowed. */
79
+ none: 0,
80
+
81
+ allowLeadingWhite: DotNetNumberStyleFlags.allowLeadingWhite,
82
+
83
+ /** Allow trailing whitespace characters. */
84
+ allowTrailingWhite: DotNetNumberStyleFlags.allowTrailingWhite,
85
+
86
+ /** Allow a leading plus (+) or minus (-) sign. */
87
+ allowLeadingSign: DotNetNumberStyleFlags.allowLeadingSign,
88
+
89
+ /** Allow a trailing plus (+) or minus (-) sign. */
90
+ allowTrailingSign: DotNetNumberStyleFlags.allowTrailingSign,
91
+
92
+ /** Allow parentheses to indicate negative numbers. */
93
+ allowParentheses: DotNetNumberStyleFlags.allowParentheses,
94
+
95
+ /** Allow decimal point in the number string. */
96
+ allowDecimalPoint: DotNetNumberStyleFlags.allowDecimalPoint,
97
+
98
+ /** Allow thousands separator characters. */
99
+ allowThousands: DotNetNumberStyleFlags.allowThousands,
100
+
101
+ /** Allow exponential notation (e.g., 1.23e+10). */
102
+ allowExponent: DotNetNumberStyleFlags.allowExponent,
103
+
104
+ /** Allow currency symbol in the number string. */
105
+ allowCurrencySymbol: DotNetNumberStyleFlags.allowCurrencySymbol,
106
+
107
+ /** Parse the number as hexadecimal. */
108
+ allowHexSpecifier: DotNetNumberStyleFlags.allowHexSpecifier,
109
+
110
+ /**
111
+ * All styles allowed (except hex).
112
+ * Includes: AllowCurrencySymbol, AllowDecimalPoint, AllowExponent, AllowLeadingSign,
113
+ * AllowLeadingWhite, AllowParentheses, AllowThousands, AllowTrailingSign, AllowTrailingWhite.
114
+ */
115
+ any:
116
+ DotNetNumberStyleFlags.allowCurrencySymbol |
117
+ DotNetNumberStyleFlags.allowDecimalPoint |
118
+ DotNetNumberStyleFlags.allowExponent |
119
+ DotNetNumberStyleFlags.allowLeadingSign |
120
+ DotNetNumberStyleFlags.allowLeadingWhite |
121
+ DotNetNumberStyleFlags.allowParentheses |
122
+ DotNetNumberStyleFlags.allowThousands |
123
+ DotNetNumberStyleFlags.allowTrailingSign |
124
+ DotNetNumberStyleFlags.allowTrailingWhite,
125
+
126
+ /**
127
+ * Currency parsing style.
128
+ * Includes: AllowCurrencySymbol, AllowDecimalPoint, AllowLeadingSign, AllowLeadingWhite,
129
+ * AllowParentheses, AllowThousands, AllowTrailingSign, AllowTrailingWhite.
130
+ */
131
+ currency:
132
+ DotNetNumberStyleFlags.allowCurrencySymbol |
133
+ DotNetNumberStyleFlags.allowDecimalPoint |
134
+ DotNetNumberStyleFlags.allowLeadingSign |
135
+ DotNetNumberStyleFlags.allowLeadingWhite |
136
+ DotNetNumberStyleFlags.allowParentheses |
137
+ DotNetNumberStyleFlags.allowThousands |
138
+ DotNetNumberStyleFlags.allowTrailingSign |
139
+ DotNetNumberStyleFlags.allowTrailingWhite,
140
+
141
+ /**
142
+ * Floating-point parsing style.
143
+ * Includes: AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign,
144
+ * AllowDecimalPoint, AllowExponent.
145
+ */
146
+ float:
147
+ DotNetNumberStyleFlags.allowLeadingWhite |
148
+ DotNetNumberStyleFlags.allowTrailingWhite |
149
+ DotNetNumberStyleFlags.allowLeadingSign |
150
+ DotNetNumberStyleFlags.allowDecimalPoint |
151
+ DotNetNumberStyleFlags.allowExponent,
152
+
153
+ /**
154
+ * Hexadecimal parsing style.
155
+ * Includes: AllowLeadingWhite, AllowTrailingWhite, AllowHexSpecifier.
156
+ */
157
+ hexNumber:
158
+ DotNetNumberStyleFlags.allowLeadingWhite |
159
+ DotNetNumberStyleFlags.allowTrailingWhite |
160
+ DotNetNumberStyleFlags.allowHexSpecifier,
161
+
162
+ /**
163
+ * Basic integer parsing style.
164
+ * Includes: AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign.
165
+ */
166
+ integer:
167
+ DotNetNumberStyleFlags.allowLeadingWhite |
168
+ DotNetNumberStyleFlags.allowTrailingWhite |
169
+ DotNetNumberStyleFlags.allowLeadingSign,
170
+
171
+ /**
172
+ * Standard number parsing style.
173
+ * Includes: AllowLeadingWhite, AllowTrailingWhite, AllowLeadingSign, AllowTrailingSign,
174
+ * AllowDecimalPoint, AllowThousands.
175
+ */
176
+ number:
177
+ DotNetNumberStyleFlags.allowLeadingWhite |
178
+ DotNetNumberStyleFlags.allowTrailingWhite |
179
+ DotNetNumberStyleFlags.allowLeadingSign |
180
+ DotNetNumberStyleFlags.allowTrailingSign |
181
+ DotNetNumberStyleFlags.allowDecimalPoint |
182
+ DotNetNumberStyleFlags.allowThousands,
183
+ } as const;
184
+
185
+ /**
186
+ * The type representing possible values of {@link (DotNetNumberStyles:variable)}.
187
+ *
188
+ * This includes individual {@link (DotNetNumberStyleFlags:variable)} and predefined combinations.
189
+ *
190
+ * @public
191
+ * @category Number Styles
192
+ */
193
+ export type DotNetNumberStyles =
194
+ (typeof DotNetNumberStyles)[keyof typeof DotNetNumberStyles];
195
+
196
+ // /** @internal */
197
+ // export class DotNetNumberStylesInfo {
198
+ // static toString(styles: DotNetNumberStyleFlags): string {
199
+ // return this.toXmlValue(styles);
200
+ // }
201
+
202
+ // static toXmlValue(styles: DotNetNumberStyleFlags): string {
203
+ // if (isSameSet(styles, DotNetNumberStyles.any)) return "Any";
204
+ // if (isSameSet(styles, DotNetNumberStyles.currency)) return "Currency";
205
+ // if (isSameSet(styles, DotNetNumberStyles.float)) return "Float";
206
+ // if (isSameSet(styles, DotNetNumberStyles.hexNumber)) return "HexNumber";
207
+ // if (isSameSet(styles, DotNetNumberStyles.integer)) return "Integer";
208
+ // if (isSameSet(styles, DotNetNumberStyles.number)) return "Number";
209
+
210
+ // return CommaText.fromStringArray(Array.from(styles.values()));
211
+ // }
212
+
213
+ // static tryFromString(value: string): Result<DotNetNumberStyleFlags> {
214
+ // return this.tryFromXmlValue(value);
215
+ // }
216
+
217
+ // static tryFromXmlValue(value: string): Result<DotNetNumberStyleFlags> {
218
+ // const normalized = value.trim();
219
+ // if (normalized.length === 0 || normalized.toLowerCase() === "none") {
220
+ // return new Ok(new Set(DotNetNumberStyles.none));
221
+ // }
222
+
223
+ // const canonical = normalized.toLowerCase();
224
+ // if (canonical === "any") return new Ok(new Set(DotNetNumberStyles.any));
225
+ // if (canonical === "currency")
226
+ // return new Ok(new Set(DotNetNumberStyles.currency));
227
+ // if (canonical === "float") return new Ok(new Set(DotNetNumberStyles.float));
228
+ // if (canonical === "hexnumber")
229
+ // return new Ok(new Set(DotNetNumberStyles.hexNumber));
230
+ // if (canonical === "integer")
231
+ // return new Ok(new Set(DotNetNumberStyles.integer));
232
+ // if (canonical === "number")
233
+ // return new Ok(new Set(DotNetNumberStyles.number));
234
+
235
+ // const commaTextResult = CommaText.tryToStringArray(normalized);
236
+ // if (commaTextResult.isErr()) {
237
+ // return commaTextResult.createOuter(
238
+ // "Invalid comma-separated styles string",
239
+ // );
240
+ // }
241
+
242
+ // const result = new Set<DotNetNumberStyleFlags>();
243
+ // for (const part of commaTextResult.value) {
244
+ // const match = Object.values(DotNetNumberStyleFlags).find(
245
+ // (x) => x.toLowerCase() === part.toLowerCase(),
246
+ // );
247
+ // if (match === undefined) {
248
+ // return new Err(`Invalid style: ${part}`);
249
+ // }
250
+ // result.add(match);
251
+ // }
252
+
253
+ // return new Ok(result);
254
+ // }
255
+
256
+ // static tryFromXmlValueWithDefault(
257
+ // value: string,
258
+ // defaultStyles: DotNetNumberStyleFlags,
259
+ // ): Result<DotNetNumberStyleFlags> {
260
+ // if (value.trim().length === 0) {
261
+ // return new Ok(new Set(defaultStyles));
262
+ // }
263
+ // return this.tryFromXmlValue(value);
264
+ // }
265
+ // }
@@ -1 +0,0 @@
1
- {"version":3,"file":"datetime-formatter.js","sourceRoot":"","sources":["../../src/code/datetime-formatter.ts"],"names":[],"mappings":"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"}
@@ -1,101 +0,0 @@
1
- import { CommaText, Err, Ok } from "@pbkware/js-utils";
2
- /**
3
- * Individual style flags that control date/time parsing behavior.
4
- *
5
- * These flags can be combined to create custom parsing rules.
6
- *
7
- * @example
8
- * ```typescript
9
- * // Combine individual flags
10
- * formatter.styles = new Set([
11
- * DotNetDateTimeStyleId.AllowLeadingWhite,
12
- * DotNetDateTimeStyleId.AllowTrailingWhite
13
- * ]);
14
- * ```
15
- *
16
- * @public
17
- * @category DateTime Styles
18
- */
19
- export var DotNetDateTimeStyleId;
20
- (function (DotNetDateTimeStyleId) {
21
- /** Allow leading whitespace characters. */
22
- DotNetDateTimeStyleId["AllowLeadingWhite"] = "AllowLeadingWhite";
23
- /** Allow trailing whitespace characters. */
24
- DotNetDateTimeStyleId["AllowTrailingWhite"] = "AllowTrailingWhite";
25
- /** Allow whitespace within the date/time string. */
26
- DotNetDateTimeStyleId["AllowInnerWhite"] = "AllowInnerWhite";
27
- /** Do not use current date for missing date components. */
28
- DotNetDateTimeStyleId["NoCurrentDateDefault"] = "NoCurrentDateDefault";
29
- /** Adjust date/time to UTC (not implemented). */
30
- DotNetDateTimeStyleId["AdjustToUniversal"] = "AdjustToUniversal";
31
- /** Assume local time zone if not specified (not implemented). */
32
- DotNetDateTimeStyleId["AssumeLocal"] = "AssumeLocal";
33
- /** Assume UTC time zone if not specified (not implemented). */
34
- DotNetDateTimeStyleId["AssumeUniversal"] = "AssumeUniversal";
35
- /** Preserve DateTimeKind when parsing (not implemented). */
36
- DotNetDateTimeStyleId["RoundTripKind"] = "RoundTripKind";
37
- })(DotNetDateTimeStyleId || (DotNetDateTimeStyleId = {}));
38
- /**
39
- * Predefined date/time style combinations for common parsing scenarios.
40
- *
41
- * @internal
42
- * @category DateTime Styles
43
- */
44
- export const DotNetDateTimeStyles = {
45
- /** No styles - strict parsing. */
46
- none: new Set(),
47
- /**
48
- * Allow whitespace in date/time strings.
49
- * Includes: AllowLeadingWhite, AllowTrailingWhite, AllowInnerWhite.
50
- */
51
- allowWhiteSpaces: new Set([
52
- DotNetDateTimeStyleId.AllowLeadingWhite,
53
- DotNetDateTimeStyleId.AllowTrailingWhite,
54
- DotNetDateTimeStyleId.AllowInnerWhite,
55
- ]),
56
- };
57
- const isSameSet = (left, right) => {
58
- if (left.size !== right.size)
59
- return false;
60
- for (const value of left) {
61
- if (!right.has(value))
62
- return false;
63
- }
64
- return true;
65
- };
66
- /** @internal */
67
- export class DotNetDateTimeStylesInfo {
68
- static toString(styles) {
69
- return this.toXmlValue(styles);
70
- }
71
- static toXmlValue(styles) {
72
- if (isSameSet(styles, DotNetDateTimeStyles.allowWhiteSpaces)) {
73
- return "AllowWhiteSpaces";
74
- }
75
- return CommaText.fromStringArray(Array.from(styles.values()));
76
- }
77
- static tryFromString(value) {
78
- return this.tryFromXmlValue(value);
79
- }
80
- static tryFromXmlValue(value) {
81
- const normalized = value.trim();
82
- if (normalized.length === 0 || normalized.toLowerCase() === "none") {
83
- return new Ok(new Set(DotNetDateTimeStyles.none));
84
- }
85
- if (normalized.toLowerCase() === "allowwhitespaces") {
86
- return new Ok(new Set(DotNetDateTimeStyles.allowWhiteSpaces));
87
- }
88
- const commaTextResult = CommaText.tryToStringArray(normalized);
89
- if (commaTextResult.isErr())
90
- return commaTextResult.createOuter("Invalid comma-separated styles string");
91
- const styles = new Set();
92
- for (const item of commaTextResult.value) {
93
- const match = Object.values(DotNetDateTimeStyleId).find((x) => x.toLowerCase() === item.toLowerCase());
94
- if (match === undefined)
95
- return new Err(`Invalid style: ${item}`);
96
- styles.add(match);
97
- }
98
- return new Ok(styles);
99
- }
100
- }
101
- //# sourceMappingURL=datetime-style.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"datetime-style.js","sourceRoot":"","sources":["../../src/code/datetime-style.ts"],"names":[],"mappings":"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"}