#! /usr/bin/gawk -f # Last edited on 1999-01-06 15:33:42 by stolfi BEGIN { usage = ( \ "format-new-concordance \\\n" \ " [ -v title=TITLE ] \\\n" \ " [ -v prevPage=NUM ] \\\n" \ " [ -v nextPage=NUM ] \\\n" \ " [ -v majTran=CHAR ] \\\n" \ " -v maxLeft=LFT -v maxString=STR -v maxRight=RHT \\\n" \ " < INFILE.hoc \\\n" \ " > OUTFILE.html" \ ); # Each line of INFILE represents one occurrence of some string # in the text, in the format # # LOC TRANS START LENGTH LCTX STRING RCTX PATT STAG PNUM HNUM # 1 2 3 4 5 6 7 8 9 10 11 # # See Note-037.txt for explanation of the fields. abort = -1; if (title == "") { title = "Concordance"; } if (maxLeft == "") { arg_error("must define \"maxLeft\""); } if (maxString == "") { arg_error("must define \"maxString\""); } if (maxRight == "") { arg_error("must define \"maxRight\""); } if (majTran == "") { print "warning: \"majTran\" empty, all versions hilighted\n" > "/dev/stderr"; } if (length(majTran) > 1) { arg-error("bad \"majTran\""); } ppat = " @@@ "; dashes = "-------------------------------------------------------------"; color_pat = "\"#ff5522\""; color_ctx = "\"#dddddd\""; color_str_ord = "\"#ccbb33\""; color_str_maj = "\"#ffee33\""; color_dsh = "\"#777777\""; color_loc = "\"#33bbdd\""; color_sec = "\"#33cc22\""; make_html_buttons(); print_html_header(); } /./ { loc = $1; tran = $2; lft = $5; str = $6; rht = $7; pat = $8; sec = $9; if (pat != ppat) { print_pattern_header(pat); ppat = pat; } gsub(/[.]/, " ", lft); gsub(/[.]/, " ", str); gsub(/[.]/, " ", rht); print_entry(sec, loc, tran, left, str, rht); } function make_html_buttons() { # Prepare the motion buttons: if ( prevPage != "" ) { prevbt = ( "[PREV] " ); } else { prevbt = ( "[ ] " ); } indexbt = ( "[INDEX] " ); if ( nextPage != "" ) { nextbt = ( "[NEXT] " ); } else { nextbt = ( "[ ] " ); } } function print_html_header() { # print header: print ""; print ""; print ( " " title "" ); print ""; printf "", color_ctx; print ""; print ""; printf "Generated %s by stolfi\n", strftime("%Y-%m-%d %H:%M:%S", systime()); print ""; print "
";
  print "";
  print ( "

" title "

" ); print ""; print ( prevbt indexbt nextbt ); print ""; print ""; } function print_pattern_header(pat) { printf "\n%.*s ", pat, color_dsh, 25+maxLeft-1, dashes; printf "%s", color_pat, pat; printf " %.*s\n\n", 80-(25+maxLeft)-length(pat)-1, dashes; } function print_entry(sec, loc, tran, left, str, rht, cs,n,ent) { n = length(lft); if (n > maxLeft) { lft = substr(lft, 1+n-maxLeft); } cs = ( (majTran=="") || (index(tran, majTran) > 0) ? color_str_maj : color_str_ord ); ent = sprintf("%*s%s%s", maxLeft, lft, cs, str, rht); printf "%-3s %-12s %-6s %s\n", color_sec, sec, color_loc, loc, tran, ent; } function print_html_tailer() { print ""; print ""; print ( prevbt indexbt nextbt ); print ""; print "
"; print ""; print ""; } function error(msg) { printf "%s\n", msg > "/dev/stderr" abort = 1 exit } function arg_error(msg) { printf "%s\n", msg > "/dev/stderr" printf "usage: %s\n", usage > "/dev/stderr" abort = 1 exit }