Skip to content

Commit

Permalink
html attr improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
borkdude committed May 24, 2024
1 parent afad241 commit 75893fc
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/squint/compiler_common.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -1060,7 +1060,7 @@ break;}" body)
(do
(when-let [dyn (:has-dynamic-expr env)]
(reset! dyn true))
(format "${%s}" (emit v (dissoc env :jsx))))
(format "${squint_html.attrs(%s)}" (emit v (dissoc env :jsx))))
(str "{..." (emit v (dissoc env :jsx)) "}"))
(str (name k) "="
(let [env env]
Expand Down
46 changes: 37 additions & 9 deletions src/squint/html.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,46 @@
function css(v) {
let ret = "";
if (v == null) return ret;
let first = true;
for (const kv of Object.entries(v)) {
if (!first) ret += ' ';
ret += kv[0];
ret += ":";
ret += kv[1];
ret += ';';
first = false;
}
return ret;
}

export function attrs(v) {
let ret = "";
if (v == null) return ret;
let first = true;
for (const kv of Object.entries(v)) {
if (!first) {
ret += ' ';
}
ret += kv[0];
ret += "=";
ret += '"';
const v1 = kv[1];
if (typeof(v1) === 'object') {
ret += css(v1);
} else
ret += v1;
ret += '"';
first = false;
}
return ret;
}

function toHTML(v) {
if (v == null) return;
if (typeof(v) === 'string') return v;
if (v[Symbol.iterator]) {
return [...v].join("");
}
if (typeof v === 'object') {
let ret = "";
for (const kv of Object.entries(v)) {
ret += kv[0];
ret += "=";
ret += '"' + kv[1] + '"';
return ret;
}
}
return v;
}

Expand Down

0 comments on commit 75893fc

Please sign in to comment.