Only log warnings for unrecognized metadata properties.
rodzic
c024f24853
commit
c62214186b
|
@ -23,8 +23,11 @@ describe("validateSvgSymbolMetadata()", () => {
|
|||
always_be_nested: true,
|
||||
})
|
||||
).toEqual({
|
||||
always_nest: true,
|
||||
always_be_nested: true,
|
||||
metadata: {
|
||||
always_nest: true,
|
||||
always_be_nested: true,
|
||||
},
|
||||
unknownProperties: [],
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -37,10 +40,14 @@ describe("validateSvgSymbolMetadata()", () => {
|
|||
});
|
||||
|
||||
it("raises errors when a property is unrecognized", () => {
|
||||
expect(() =>
|
||||
expect(
|
||||
validateSvgSymbolMetadata({
|
||||
always_nest: true,
|
||||
blarp: true,
|
||||
})
|
||||
).toThrow('Unrecognized SVG symbol metadata property "blarp"');
|
||||
).toEqual({
|
||||
metadata: { always_nest: true },
|
||||
unknownProperties: ["blarp"],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -25,8 +25,11 @@ function isSvgSymbolMetadataBoolean(
|
|||
|
||||
export type SvgSymbolMetadata = SvgSymbolMetadataBooleans;
|
||||
|
||||
export function validateSvgSymbolMetadata(obj: any): SvgSymbolMetadata {
|
||||
const result: SvgSymbolMetadata = {};
|
||||
export function validateSvgSymbolMetadata(
|
||||
obj: any
|
||||
): { metadata: SvgSymbolMetadata; unknownProperties: string[] } {
|
||||
const metadata: SvgSymbolMetadata = {};
|
||||
const unknownProperties: string[] = [];
|
||||
for (let key in obj) {
|
||||
const value: unknown = obj[key];
|
||||
if (isSvgSymbolMetadataBoolean(key)) {
|
||||
|
@ -35,10 +38,10 @@ export function validateSvgSymbolMetadata(obj: any): SvgSymbolMetadata {
|
|||
`Expected "${key}" to be a boolean, but it is a ${typeof value}!`
|
||||
);
|
||||
}
|
||||
result[key] = value;
|
||||
metadata[key] = value;
|
||||
} else {
|
||||
throw new Error(`Unrecognized SVG symbol metadata property "${key}"`);
|
||||
unknownProperties.push(key);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return { metadata, unknownProperties };
|
||||
}
|
||||
|
|
|
@ -127,7 +127,17 @@ export function build() {
|
|||
});
|
||||
const symbol = convertSvgMarkupToSymbolData(filename, svgMarkup);
|
||||
if (metaToml) {
|
||||
symbol.meta = validateSvgSymbolMetadata(toml.parse(metaToml));
|
||||
const { metadata, unknownProperties } = validateSvgSymbolMetadata(
|
||||
toml.parse(metaToml)
|
||||
);
|
||||
symbol.meta = metadata;
|
||||
if (unknownProperties.length) {
|
||||
console.log(
|
||||
`WARNING: Found unknown metadata properties ${unknownProperties.join(
|
||||
", "
|
||||
)}.`
|
||||
);
|
||||
}
|
||||
}
|
||||
vocab.push(symbol);
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue