theme-loader
Version:
theme-loader
29 lines (24 loc) • 737 B
JavaScript
import path from 'path';
import jsdom from 'jsdom';
class Icon {
constructor(name, node) {
this.name = name;
this.children = node.innerHTML;
this.attributes = Array.prototype.slice.call(node.attributes)
.map((x) => ({ name: x.name, value: x.value }))
.reduce((attrs, x) => Object.assign({ [x.name]: x.value }, attrs), {});
}
static parse(resourcePath, source) {
const name = path.parse(resourcePath).name;
return new Promise((resolve, reject) => {
jsdom.env(source, (error, window) => {
if (error) {
reject(error);
} else {
resolve(new Icon(name, window.document.getElementsByTagName('svg')[0]));
}
});
});
}
};
export default Icon;