import { Node } from 'svg-parser'; function stringifyStyle(style = {}) { const proprietyNames = Object.keys(style); return proprietyNames.reduce((accumulator, proprietyName) => { const propriety = Reflect.get(style, proprietyName); if (typeof propriety === 'string') { return accumulator + `${proprietyName}: "${propriety}", `; } return accumulator + `${proprietyName}: ${propriety}, `; }, String()); } function stringifyAttributes(attributes = {}) { const attributeNames = Object.keys(attributes); return attributeNames.reduce((accumulator, attributeName) => { const attribute = Reflect.get(attributes, attributeName); if (typeof attribute === 'object') { return accumulator + ` ${attributeName}={{ ${stringifyStyle(attribute)} }}`; } return accumulator + ` ${attributeName}="${attribute}"`; }, String()); } export function stringify(node: Node | string): string { if (typeof node === 'string') { return node; } const attributes = stringifyAttributes(node.attributes); return `<${node.name}${attributes}>${node.children.map(stringify).join()}`; }