From 97fd4d5f63904606881601823fede9ea02fbcdfd Mon Sep 17 00:00:00 2001 From: DarkWiiPlayer Date: Mon, 17 Feb 2025 15:12:28 +0100 Subject: [PATCH] Improved case rewriting --- mini.js | 11 +++++++++-- render.js | 5 +++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mini.js b/mini.js index 36f2aeb..c8a9603 100644 --- a/mini.js +++ b/mini.js @@ -1,7 +1,14 @@ -export default new Proxy(document, { +/** + * @param {String} name + * @return {String} + */ +const snakeToHTML = name => name.replace(/([A-Z])/g, "-$1").replace(/^-/, "").toLowerCase() + +// @ts-ignore +export default new Proxy(/** @type {ObjectHTMLElement>} */(document), { /** @param {string} tag */ get: (_, tag) => /** @param {any[]} args */ (...args) => { - let node = document.createElement(tag) + let node = document.createElement(snakeToHTML(tag)) for (const arg of args) { if (arg instanceof HTMLElement) { node.append(arg) diff --git a/render.js b/render.js index d9db74b..e22967b 100644 --- a/render.js +++ b/render.js @@ -25,7 +25,8 @@ export const nothing = Symbol("Explicit non-argument for Nyooom") * @param {string} key * @return {string} */ -const snakeToCSS = key => key.replace(/^[A-Z]/, a => "-" + a).replace(/[A-Z]/g, a => '-' + a.toLowerCase()) +const snakeToCSS = key => key.replace(/([A-Z])/g, "-$1").replace(/^-/, "--").toLowerCase() +const snakeToHTML = key => key.replace(/([A-Z])/g, "-$1").replace(/^-/, "").toLowerCase() /** @typedef SpecialAttributeDescriptor * @type {object} @@ -358,7 +359,7 @@ export class DomHtmlRenderer extends DomRenderer { * @return {Node} */ createElement(name, options) { - return document.createElement(name.replace(/([a-z])([A-Z])/g, "$1-$2"), options) + return document.createElement(snakeToHTML(name), options) } /** @type {Object} */