diff options
Diffstat (limited to 'client/simple/tools/jinja_svg_catalog.js')
| -rw-r--r-- | client/simple/tools/jinja_svg_catalog.js | 67 |
1 files changed, 27 insertions, 40 deletions
diff --git a/client/simple/tools/jinja_svg_catalog.js b/client/simple/tools/jinja_svg_catalog.js index e3e8f1216..a3e4fd166 100644 --- a/client/simple/tools/jinja_svg_catalog.js +++ b/client/simple/tools/jinja_svg_catalog.js @@ -1,8 +1,8 @@ +import { Edge } from "edge.js"; import fs from "fs"; -import { resolve, dirname } from "path"; -import { Edge } from 'edge.js'; +import { dirname, resolve } from "path"; import { optimize as svgo } from "svgo"; -import { fileURLToPath } from 'url'; +import { fileURLToPath } from "url"; const __dirname = dirname(fileURLToPath(import.meta.url)); const __jinja_class_placeholder__ = "__jinja_class_placeholder__"; @@ -30,7 +30,6 @@ const __jinja_class_placeholder__ = "__jinja_class_placeholder__"; * @property {string} class - SVG's class name (value of XML class attribute) */ - // -- functions /** @@ -43,34 +42,30 @@ const __jinja_class_placeholder__ = "__jinja_class_placeholder__"; */ function jinja_svg_catalog(dest, macros, items) { - const svg_catalog = {}; const edge_template = resolve(__dirname, "jinja_svg_catalog.html.edge"); - items.forEach( - (item) => { - - /** @type {import("svgo").Config} */ - // JSON.stringify & JSON.parse are used to create a deep copy of the - // item.svgo_opts object - const svgo_opts = JSON.parse(JSON.stringify(item.svgo_opts)); - svgo_opts.plugins.push({ - name: "addClassesToSVGElement", - params: { - classNames: [__jinja_class_placeholder__] - }} - ); - - try { - const raw = fs.readFileSync(item.src, "utf8"); - const opt = svgo(raw, svgo_opts); - svg_catalog[item.name] = opt.data; - } catch (err) { - console.error(`ERROR: jinja_svg_catalog processing ${item.name} src: ${item.src} -- ${err}`); - throw(err); + items.forEach((item) => { + /** @type {import("svgo").Config} */ + // JSON.stringify & JSON.parse are used to create a deep copy of the + // item.svgo_opts object + const svgo_opts = JSON.parse(JSON.stringify(item.svgo_opts)); + svgo_opts.plugins.push({ + name: "addClassesToSVGElement", + params: { + classNames: [__jinja_class_placeholder__] } + }); + + try { + const raw = fs.readFileSync(item.src, "utf8"); + const opt = svgo(raw, svgo_opts); + svg_catalog[item.name] = opt.data; + } catch (err) { + console.error(`ERROR: jinja_svg_catalog processing ${item.name} src: ${item.src} -- ${err}`); + throw err; } - ); + }); fs.mkdir(dirname(dest), { recursive: true }, (err) => { if (err) throw err; @@ -82,20 +77,16 @@ function jinja_svg_catalog(dest, macros, items) { edge_template: edge_template, __jinja_class_placeholder__: __jinja_class_placeholder__, // see https://github.com/edge-js/edge/issues/162 - open_curly_brace : "{{", - close_curly_brace : "}}" + open_curly_brace: "{{", + close_curly_brace: "}}" }; - const jinjatmpl = Edge.create().renderRawSync( - fs.readFileSync(edge_template, "utf-8"), - ctx - ); + const jinjatmpl = Edge.create().renderRawSync(fs.readFileSync(edge_template, "utf-8"), ctx); fs.writeFileSync(dest, jinjatmpl); console.log(`[jinja_svg_catalog] created: ${dest}`); } - /** * Calls jinja_svg_catalog for a collection of icon sets where each set has its * own parameters. @@ -109,7 +100,6 @@ function jinja_svg_sets(dest, macros, sets) { const items = []; const all = []; for (const obj of sets) { - for (const [name, file] of Object.entries(obj.set)) { if (all.includes(name)) { throw new Error(`ERROR: ${name} has already been defined`); @@ -117,7 +107,7 @@ function jinja_svg_sets(dest, macros, sets) { items.push({ name: name, src: resolve(obj.base, file), - svgo_opts: obj.svgo_opts, + svgo_opts: obj.svgo_opts }); } jinja_svg_catalog(dest, macros, items); @@ -126,7 +116,4 @@ function jinja_svg_sets(dest, macros, sets) { // -- exports -export { - jinja_svg_sets, - jinja_svg_catalog, -}; +export { jinja_svg_sets, jinja_svg_catalog }; |