#!/bin/sh # # Take overstrike bold/underline and/or ansi bold/inverse sequences # and turn them into color html. corey @ cac.washington.edu 1/11/02 # http://staff.washington.edu/corey # # -w does white background with red/blue colors and black text (the default) # -b does black background with green/blue colors and white text # -x does black background with my green/orange xterm colors and white text # -g does a gray background with green/orange colors and white text # -p does a pale background with green/orange colors and black text # -i converts inverse video to bold+italic instead of a color # The next args, if present, are bold and underline colors as 6 character hex # # example input sources: man, wdiff -p, bgrep ESC='' BI="${ESC}\\[7m" # inverse video (converted to B2 below unless -i used) BO="${ESC}\\[1m" # bold color (green on my xterm) B2="${ESC}\\[4m" # italic color (red on my xterm) NO="${ESC}\\[m" BS='' AMP='' LT='' GT='' BGCOLOR=ffffff TXCOLOR=000000 COLOR1=0000ff # default bold color is blue COLOR2=ff0000 # default underline color is red for i in $*; do case "$1" in -w) shift;; # default is white background with black text -b) BGCOLOR=000000; TXCOLOR=ffffff; COLOR1=00ff00;COLOR2=00a0ff; shift;; -x) BGCOLOR=000000; TXCOLOR=ffffff; COLOR1=30cf30;COLOR2=ffa279; shift;; -g) BGCOLOR=7a7a7a; TXCOLOR=ffffff; COLOR1=30cf30;COLOR2=ffa279; shift;; -p) BGCOLOR=f4f0f4; TXCOLOR=000000; COLOR1=30cf30;COLOR2=ffa279; shift;; -i) ITALICS="s,$BI\\(.[^${ESC}]*\\)$NO,\\1,g"; shift;; *) break;; esac done COLOR1=${1-$COLOR1} # bold overstrike COLOR2=${2-$COLOR2} # underline overstrike echo "
"
sed "
s,&,$AMP,g
s,<,$LT,g
s,>,$GT,g
${ITALICS-s,$BI,$B2,g}
s,\\(.\\)$BS\\1,$BO\\1$NO,g
: l1
s,$BO\\(.[^${ESC}]*\\)$NO$BO,$BO\\1,
t l1
s,$BO,,g
s,_$BS\\(.\\),$B2\\1$NO,g
: l2
s,$B2\\(.[^${ESC}]*\\)$NO$B2,$B2\\1,
t l2
s,$B2,,g
s,$NO,,g
s,$AMP,\\&,g
s,$LT,\\<,g
s,$GT,\\>,g
t
"
echo ""