stanley lieberimport6a3fde711 years agoHistory
55 lines · 771 B · Text
RawDownload
#!/usr/bin/awk -ffunction pr(str) {	if(lastc !~ "[{(]")		gsub(/'/, "''", str)	printf "%s", str}function trans(c) {	printf "%s", end 	lastc = c	end = "\n"	if(c == "%")		end = ""	else if(c == "(")		printf "echo -n "	else if(c ~ "[})]") {		end = "'\n"		printf "echo -n '"	}} BEGIN {	lastc = "{"	trans("}")}END {	print end} /^%/ && $0 !~ /^%[{()}%]/ && lastc !~ /[({]/ {	trans("%")	print substr($0, 2)	next}{	if(lastc == "%")		trans("}")	n = split($0, a, "%")	pr(a[1])	for(i=2; i<=n; i++) {		c = substr(a[i], 1, 1)		rest = substr(a[i], 2) 		if((lastc !~ "[({]" && c ~ "[({]") ||		   (lastc == "{" && c == "}") ||		   (lastc == "(" && c == ")"))			trans(c)		else if(c == "%")			pr("%")		else			pr("%" c)		pr(rest)	}	pr("\n")}