Only log warnings for unrecognized metadata properties.
rodzic
c024f24853
commit
c62214186b
|
@ -23,8 +23,11 @@ describe("validateSvgSymbolMetadata()", () => {
|
||||||
always_be_nested: true,
|
always_be_nested: true,
|
||||||
})
|
})
|
||||||
).toEqual({
|
).toEqual({
|
||||||
always_nest: true,
|
metadata: {
|
||||||
always_be_nested: true,
|
always_nest: true,
|
||||||
|
always_be_nested: true,
|
||||||
|
},
|
||||||
|
unknownProperties: [],
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -37,10 +40,14 @@ describe("validateSvgSymbolMetadata()", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("raises errors when a property is unrecognized", () => {
|
it("raises errors when a property is unrecognized", () => {
|
||||||
expect(() =>
|
expect(
|
||||||
validateSvgSymbolMetadata({
|
validateSvgSymbolMetadata({
|
||||||
|
always_nest: true,
|
||||||
blarp: 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 type SvgSymbolMetadata = SvgSymbolMetadataBooleans;
|
||||||
|
|
||||||
export function validateSvgSymbolMetadata(obj: any): SvgSymbolMetadata {
|
export function validateSvgSymbolMetadata(
|
||||||
const result: SvgSymbolMetadata = {};
|
obj: any
|
||||||
|
): { metadata: SvgSymbolMetadata; unknownProperties: string[] } {
|
||||||
|
const metadata: SvgSymbolMetadata = {};
|
||||||
|
const unknownProperties: string[] = [];
|
||||||
for (let key in obj) {
|
for (let key in obj) {
|
||||||
const value: unknown = obj[key];
|
const value: unknown = obj[key];
|
||||||
if (isSvgSymbolMetadataBoolean(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}!`
|
`Expected "${key}" to be a boolean, but it is a ${typeof value}!`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
result[key] = value;
|
metadata[key] = value;
|
||||||
} else {
|
} 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);
|
const symbol = convertSvgMarkupToSymbolData(filename, svgMarkup);
|
||||||
if (metaToml) {
|
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);
|
vocab.push(symbol);
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue