#!/bin/sed -nEf
+# Copyright 2018 - 2019 Paul Hänsch
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+# IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
:Escapes
s,\\\\,\\,g; s,\\&,\&,g;
s,\\<,\<,g; s,\\>,\>,g;
G; h; s;^[^\n]*\n+;;; x; s;\n.*$;;;
:attribs
-s;(<[^/][^>]*)>[ \t]*\.[ \t];\1>;g; t attEnd;
s;class="([^>]+)>[ \t]*\.([^< \t]+);class="\2 \1>;g; t attribs;
s;(<[^/][^>]*)>[ \t]*\.([^< \t]+);\1 class="\2">;g;
s;(<[^/][^>]*)>[ \t]*#([^< \t]+);\1 id="\2">;g;
s;(<option( [^>]+)?)>[ \t]*(checked|selected);\1 selected="selected">;g;
s;(<select( [^>]+)?)>[ \t]*multiple;\1 multiple="multiple">;g;
t attribs;
-:attEnd
+s;(<[^/][^>]*>)[ \t]*\.[ \t];\1;g;
s;(<[^/][^>]*>)[ \t]*;\1;g;
# s;(<[^/][^>]*)>[ \t]*</[^>]+>;\1/>;g;