MCPcopy Index your code
hub / github.com/NativeScript/NativeScript / parse

Function parse

packages/core/ui/styling/font-common.ts:81–120  ·  view source on GitHub ↗
(fontVariationSettings: string)

Source from the content-addressed store, hash-verified

79
80export namespace FontVariationSettings {
81 export function parse(fontVariationSettings: string): Array<FontVariationSettingsType> | null {
82 if (!fontVariationSettings) {
83 return null;
84 }
85
86 const excluded = ['normal', 'revert-layer'];
87 const variationSettingsValue: string = fontVariationSettings.trim();
88
89 if (excluded.indexOf(variationSettingsValue.toLowerCase()) !== -1) {
90 return null;
91 }
92
93 const chunks = variationSettingsValue.split(',');
94 if (chunks.length) {
95 const parsed: Array<FontVariationSettingsType> = [];
96 for (const chunk of chunks) {
97 const trimmedChunk = chunk.trim();
98 const axisChunks = trimmedChunk.split(' ');
99 if (axisChunks.length === 2) {
100 const axisName = axisChunks[0].trim();
101 const axisValue = parseFloat(axisChunks[1]);
102 // See https://drafts.csswg.org/css-fonts/#font-variation-settings-def.
103 // Axis name strings longer or shorter than four characters are invalid.
104 if (!isNaN(axisValue) && axisName.length === 6 && ((axisName.startsWith("'") && axisName.endsWith("'")) || (axisName.startsWith('"') && axisName.endsWith('"')))) {
105 // Remove quotes as they might cause problems when using name as an object key
106 const unquotedAxisName = axisName.substring(1, axisName.length - 1);
107 parsed.push({ axis: unquotedAxisName, value: axisValue });
108 } else {
109 Trace.write('Invalid value (font-variation-settings): ' + variationSettingsValue, Trace.categories.Error, Trace.messageType.error);
110 }
111 } else {
112 Trace.write('Invalid value (font-variation-settings): ' + variationSettingsValue, Trace.categories.Error, Trace.messageType.error);
113 }
114 }
115
116 return parsed;
117 }
118
119 Trace.write('Invalid value (font-variation-settings): ' + variationSettingsValue, Trace.categories.Error, Trace.messageType.error);
120 }
121
122 export function toString(fontVariationSettings: FontVariationSettingsType[] | null): string | null {
123 if (fontVariationSettings?.length) {

Callers 1

createFunction · 0.70

Calls 3

indexOfMethod · 0.80
writeMethod · 0.65
pushMethod · 0.45

Tested by 1

createFunction · 0.56