From eb49d1494c5b060a43fa904b382482913e9c53a8 Mon Sep 17 00:00:00 2001 From: Stephen Date: Fri, 19 Jan 2024 15:18:04 +0100 Subject: [PATCH] Tings --- module.js | 2 +- modules/renderer-template.js | 9 +++++---- modules/renderer/renderer.js | 6 +++--- modules/renderer/to-text.js | 1 + 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/module.js b/module.js index 1debd15..369fe44 100644 --- a/module.js +++ b/module.js @@ -7,7 +7,7 @@ export default function Literal(template) { // which is what we want to do. Instead it creates a new renderer... template = typeof template === 'string' ? - document.getElementById(template) : + document.getElementById(template.slice(1)) : template ; return new TemplateRenderer(template); diff --git a/modules/renderer-template.js b/modules/renderer-template.js index 6c6699b..88a0e52 100644 --- a/modules/renderer-template.js +++ b/modules/renderer-template.js @@ -42,6 +42,7 @@ const assign = Object.assign; const keys = Object.keys; const cache = {}; const nodes = []; +const defaults = {}; function dataToString() { @@ -132,12 +133,12 @@ function createRenderer(Renderer) { return renderer; } -export default function TemplateRenderer(template, element = template.parentElement, parameters = {}) { +export default function TemplateRenderer(template, element = template.parentElement, parameters = {}, options = defaults) { const id = identify(template) ; - const { content, renderers } = cache[id] - || (cache[id] = compileTemplate(template, id, { - nostrict: template.hasAttribute('nostrict') + const { content, renderers } = cache[id] || + (cache[id] = compileTemplate(template, id, { + nostrict: options.nostrict || (template.hasAttribute && template.hasAttribute('nostrict')) })); this.element = element; diff --git a/modules/renderer/renderer.js b/modules/renderer/renderer.js index ed4a110..f38e8ab 100644 --- a/modules/renderer/renderer.js +++ b/modules/renderer/renderer.js @@ -147,21 +147,21 @@ function renderValue(renderer, args, values, n, object, isRender = false) { return; } - // Is target a Stream? + // Is target a pipeable Stream? if (target.pipe) { const streams = renderer.streams || (renderer.streams = []); values[n] = ''; // Do not render synchronous values that are in the stream // immediately, as they are about to be rendered by the renderer let isRender = false; - target.each((value) => renderValue(renderer, args, values, n, value, isRender)); + target.pipe({ push: (value) => renderValue(renderer, args, values, n, value, isRender) }); isRender = true; streams.push(target); return; } // Is target a Stream that is already consumed, and therefore does not - // have .each()? We still want to stop it when the renderer is + // have .pipe()? We still want to stop it when the renderer is // destroyed, but we don't want to renderer anything. if (Stream.isStream(target)) { const streams = renderer.streams || (renderer.streams = []); diff --git a/modules/renderer/to-text.js b/modules/renderer/to-text.js index 5737e4f..d8024b2 100644 --- a/modules/renderer/to-text.js +++ b/modules/renderer/to-text.js @@ -165,6 +165,7 @@ const toText = overload(toType, { // Convert NaN to empty string and Infinity to ∞ symbol Number.isNaN(value) ? '' : Number.isFinite(value) ? value : + value === Math.PI ? '' : value < 0 ? '-∞' : '∞' ),