From 2d901f7c743c22a38391309afdfa082f24902e2b Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Fri, 31 May 2024 12:29:08 +0200 Subject: [PATCH] Fix #4: html5 by default, void tags --- CHANGELOG.md | 5 +++++ script/changelog.clj | 17 +++++++++++++++++ src/borkdude/html.cljc | 9 ++++++++- test/borkdude/html_test.cljc | 8 +++----- 4 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 CHANGELOG.md create mode 100755 script/changelog.clj diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ec5c22a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## Unreleased + +- Fix [#4](https://github.com/borkdude/html/issues/4): support HTML5 by default (void tags) diff --git a/script/changelog.clj b/script/changelog.clj new file mode 100755 index 0000000..ac1a76b --- /dev/null +++ b/script/changelog.clj @@ -0,0 +1,17 @@ +#!/usr/bin/env bb + +(ns changelog + (:require [clojure.string :as str])) + +(let [changelog (slurp "CHANGELOG.md") + replaced (str/replace changelog + #" #(\d+)" + (fn [[_ issue after]] + (format " [#%s](https://github.com/borkdude/html/issues/%s)%s" + issue issue (str after)))) + replaced (str/replace replaced + #"@([a-zA-Z0-9-_]+)([, \.)])" + (fn [[_ name after]] + (format "[@%s](https://github.com/%s)%s" + name name after)))] + (spit "CHANGELOG.md" replaced)) diff --git a/src/borkdude/html.cljc b/src/borkdude/html.cljc index c85dfb1..ce3ed9c 100644 --- a/src/borkdude/html.cljc +++ b/src/borkdude/html.cljc @@ -60,6 +60,12 @@ `(str ~acc ~x (str* ~@xs)))) acc))) +(def ^{:doc "A list of elements that must be rendered without a closing tag. From hiccup." + :private true} + void-tags + #{"area" "base" "br" "col" "command" "embed" "hr" "img" "input" "keygen" "link" + "meta" "param" "source" "track" "wbr"}) + (defn reader [form] (cond (nil? form) nil @@ -85,7 +91,8 @@ [(str "<" tag attrs ">")] ["<" tag " " attrs ">"])) ~@(map #(list `html %) children) - ~(if omit-tag? + ~(if (or omit-tag? + (contains? void-tags tag)) nil (str "")))))) (string? form) `(->Html ~(escape-html form)) diff --git a/test/borkdude/html_test.cljc b/test/borkdude/html_test.cljc index a8a1834..4082bec 100644 --- a/test/borkdude/html_test.cljc +++ b/test/borkdude/html_test.cljc @@ -25,10 +25,6 @@ "Hi" (html [:a {:href "#"} "Hi"]) - ;; XHTML5? - "
" - (html [:hr]) - "
<script>
" (html [:div "