Only log warnings for unrecognized metadata properties.

pull/43/head
Atul Varma 2021-02-28 18:57:51 -05:00
rodzic c024f24853
commit c62214186b
3 zmienionych plików z 30 dodań i 10 usunięć

Wyświetl plik

@ -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"],
});
});
});

Wyświetl plik

@ -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 };
}

Wyświetl plik

@ -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);
}