/* * $Id: doc.awk,v 1.3 2007/04/30 08:32:40 bacon Exp $ * * {License} */ global header, mode; global empty_line_count; global para_started; global list_count; func print_text (full) { local fra1, fra2, link, idx, t1, t2; gsub ("<", "\\<", full); gsub (">", "\\>", full); while (match (full, /\{[^{},]+,[^{},]+\}/) > 0) { fra1 = substr (full, 1, RSTART-1); link = substr (full, RSTART, RLENGTH); fra2 = substr (full, RSTART+RLENGTH, length(full)-RLENGTH); idx = index(link, ","); t1 = substr (link, 2, idx-2); t2 = substr (link, idx+1, length(link)-idx-1); full = sprintf ("%s%s%s", fra1, t2, t1, fra2); } while (match (full, /\[\[[^\[\][:space:]]+\]\]/) > 0) { fra1 = substr (full, 1, RSTART-1); link = substr (full, RSTART+2, RLENGTH-4); fra2 = substr (full, RSTART+RLENGTH, length(full)-RLENGTH); full = sprintf ("%s%s%s", fra1, link, fra2); } while (match (full, /##[^#[:space:]]+##/) > 0) { fra1 = substr (full, 1, RSTART-1); link = substr (full, RSTART+2, RLENGTH-4); fra2 = substr (full, RSTART+RLENGTH, length(full)-RLENGTH); full = sprintf ("%s%s%s", fra1, link, fra2); } print full; } BEGIN { header = 1; mode = 0; empty_line_count = 0; para_started = 0; #output=ARGV[0]; #gsub (/\.man/, ".html", output); #print "OUTPUT TO: " output; print ""; print ""; print ""; print ""; } header && /^\.[[:alpha:]]+[[:space:]]/ { if ($1 == ".title") { local i; printf ""; for (i = 2; i <= NF; i++) printf "%s ", $i; print ""; } } header && !/^\.[[:alpha:]]+[[:space:]]/ { header = 0; print ""; print ""; } !header { local text; if (mode == 0) { if (/^$/) { # empty line if (para_started) { para_started = 0; print "

"; } empty_line_count++; } else { if (/^= [^=]+ =$/) { if (para_started) { print "

"; para_started = 0; } text=substr($0, 2, length($0)-2); print "

" text "

"; } else if (/^== [^=]+ ==$/) { if (para_started) { print "

"; para_started = 0; } text=substr($0, 3, length($0)-4); print "

" text "

"; } else if (/^=== [^=]+ ===$/) { if (para_started) { print "

"; para_started = 0; } text=substr($0, 4, length($0)-6); print "

" text "

"; } else if (/^==== [^=]+ ====$/) { if (para_started) { print "

"; para_started = 0; } text=substr($0, 5, length($0)-8); print "

" text "

"; } else if (/^\{\{\{$/) { # {{{ if (para_started) { print "

"; para_started = 0; } print "
";
				mode = 1;
			}
			else if (/\[\[\[/)
			{
				if (para_started)
				{
					print "

"; para_started = 0; } print "
"; mode = 0; } else { gsub ("<", "\\<"); gsub (">", "\\>"); print $0; } } else if (mode == 2) { if (/^]]]$/) { # ]]] print ""; print ""; mode = 0; } else if (/^\* [^[:space:]]+/) { gsub ("<", "\\<"); gsub (">", "\\>"); if (list_count > 0) print ""; print "
  • "; print_text (substr ($0, 3, length($0)-2)); list_count++; } else { print_text ($0); } } else if (mode == 3) { if (/^\)\)\)$/) { # ))) print "
  • "; print ""; mode = 0; } else if (/^\* [^[:space:]]+/) { gsub ("<", "\\<"); gsub (">", "\\>"); if (list_count > 0) print ""; print "
  • "; print_text (substr ($0, 3, length($0)-2)); list_count++; } else { print_text ($0); } } } END { print ""; print ""; }