shorthand html
authorpaul <paul@plutz.net>
Sat, 12 May 2018 23:39:10 +0000 (23:39 +0000)
committerpaul <paul@plutz.net>
Sat, 12 May 2018 23:39:10 +0000 (23:39 +0000)
svn path=/trunk/; revision=66

html-sh.sed [new file with mode: 0755]

diff --git a/html-sh.sed b/html-sh.sed
new file mode 100755 (executable)
index 0000000..2d96275
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/sed -nrf
+
+s;\[checkbox[ \t]+"([^"]*)"[ \t]+"([^"]*)";[input type="checkbox" name="\1" value="\2";g;
+s;\[radio[ \t]+"([^"]*)"[ \t]+"([^"]*)";[input type="radio" name="\1" value="\2";g;
+s;\[submit[ \t]+"([^"]*)"[ \t]+"([^"]*)";[button type="submit" name="\1" value="\2";g;
+s;\[a[ \t]+"([^"]*)";[a href="\1";g;
+s;\[img[ \t]+"([^"]*)"[ \t]+"([^"]*)";[img src="\1" alt="\2";g;
+
+s;\[!([^]\[]*)\];<!\1>;g;
+
+:tags
+s;\[([^]\[< \t]+)([^]\[]*)\];<\1>\2</\1>;g;
+t tags;
+
+G;
+:tagclose
+s;^([^]\n]*)\]([^\n]*)\n([^\n]+);\1\3\2;
+t tagclose;
+h; s;^([^\n]*)\n;;; x; s;\n.*$;;;
+
+:tagopen
+s;^([^\[\n]*)\[([^]\[< \t\n]+)([^\n]*);\1<\2>\3\n</\2>;
+t tagopen;
+G; h; s;^[^\n]*\n+;;; x; s;\n.*$;;;
+
+:attribs
+s;class="([^>]+)>[ \t]+\.([^ \t]+);class="\2 \1>;g; t attribs;
+s;>[ \t]+\.([^ \t]+); class="\1">;g;
+s;>[ \t]+#([^ \t]+); id="\1">;g;
+s;>[ \t]+([^ \t=<]+=("[^"]*"|'[^']*'|[^ \t]*)); \1>;g;
+s;(<input type="(checkbox|radio)" [^>]+)>[ \t]+checked;\1 checked="checked">;g;
+t attribs;
+
+s;(<[^/][^>]*>) ;\1;g;
+s;(<[^/][^>]*)>[ \t]*</[^>]+>;\1/>;g;
+
+p; ${g; s;\n+;;g; p;}