From 128d8c4bcddf9570da5785ff171e70c97c1a54b5 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Mon, 22 Jan 2024 09:44:38 -0600 Subject: Update --- et | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'et') diff --git a/et b/et index 06cbf4c..0e03aa3 100755 --- a/et +++ b/et @@ -3,15 +3,22 @@ # usage: et | sh BEGIN { - xend = xend ? xend : "...xend..." - dend = dend ? dend : "...dend..." + xend = xend ? xend : "...end...shexpand..." + dend = dend ? dend : "...end...document..." # We shell out to sed for this because awk doesn't do capture groups ;-; - shellfix = "sed -E -e 's/`/\\\\`/g' " \ - "-e 's/(^|[^\\$])\\$([^\\$]|$)/\\1\\\\$\\2/g' " \ - "-e 's/(^|[^\\$])\\$(\\$+)([^\\$]|$)/\\1\\2\\3/g'" + shellfix = "sed -E" \ + " -e 's/`/\\\\`/g'" \ + " -e 's/(^|[^\\$])\\$([^\\$]|$)/\\1\\\\$\\2/g'" \ + " -e 's/(^|[^\\$])\\$(\\$+)([^\\$]|$)/\\1\\2\\3/g'" + htmlfix = "sed -E" \ + " -e 's#([^\\\\]|^)&#\\1\\&#g;'" \ + " -e 's#([^\\\\]|^)<#\\1\\<#g;'" \ + " -e 's#([^\\\\]|^)>#\\1\\>#g;'" \ + " -e 's#\\\\([&<>])#\\1#g;'" true = 1 ; false = 0 - print "shellexpand()(eval \"$(echo \"cat<<'"xend"'\";cat;echo "xend")\")" + print "shexpand()(eval \"$(echo \"cat<<'"xend"'\";cat;echo "xend")\")" print "shellfix()(" shellfix ")" + print "htmlfix()(" htmlfix ")" } end[endn] && $0 == end[endn] { @@ -32,7 +39,7 @@ end[endn] && $0 == end[endn] { docp = !docp docend = $2 ? $2 : dend if (docp) - print "shellexpand<<" docend + print "shexpand<<" docend else print docend "\n" next -- cgit 1.4.1-21-gabe81