@tak-ps/node-cot
Version:
Lightweight JavaScript library for parsing and manipulating TAK messages
49 lines • 1.79 kB
JavaScript
import XMLDocument from '../xml-document.js';
import IconsetSchema, { IconsetAttributes, IconAttributes } from '../types/iconset.js';
import AJV from 'ajv';
const checkIconset = (new AJV({
allErrors: true,
coerceTypes: true,
allowUnionTypes: true
}))
.compile(IconsetSchema);
/**
* Helper class for creating and parsing Iconset XML documents
*/
export class Iconset extends XMLDocument {
/**
* Return an Iconset from a string XML representation
*/
static parse(input) {
const basemap = super.check(String(input), checkIconset);
return new Iconset(basemap);
}
get uid() {
return this.raw.iconset._attributes.uid;
}
get name() {
return this.raw.iconset._attributes.name;
}
icons() {
const icons = new Set();
for (const icon of Array.isArray(this.raw.iconset.icon) ? this.raw.iconset.icon : [this.raw.iconset.icon]) {
icons.add(icon._attributes);
}
return icons;
}
to_json() {
const iconset = {
uid: this.raw.iconset._attributes.uid,
version: this.raw.iconset._attributes.version,
name: this.raw.iconset._attributes.name,
skip_resize: this.raw.iconset._attributes.skip_resize === undefined ? false : this.raw.iconset._attributes.skip_resize,
default_group: this.raw.iconset._attributes.default_group,
default_friendly: this.raw.iconset._attributes.default_friendly,
default_hostile: this.raw.iconset._attributes.default_hostile,
default_neutral: this.raw.iconset._attributes.default_neutral,
default_unknown: this.raw.iconset._attributes.default_unknown
};
return iconset;
}
}
//# sourceMappingURL=iconset.js.map