: Filter for converting a MATHS document into HTML. WWWHOST=www.csci.csusb.edu; export WWWHOST # //www/ host where page is published WEBHOST=web.csusb.edu; export WEBHOST # //web/ host where page is published if [ $# -eq 0 ]; then echo Usage: $0 input_file\[.mth\]; exit 1; fi if expr $1 : '.*\.mth$' >/dev/null then mthfile=$1; name=`expr $mthfile : '\(.*\)\.mth$'`; htmlfile=$name.html elif expr $1 : '.*\.html$' >/dev/null then htmlfile="$1"; name=`expr $htmlfile : '\(.*\)\.html$'`; mthfile=$name.mth echo "Assuming that $htmlfile is to be made from $mthfile" else name=$1; mthfile=$1.mth; htmlfile=$1.html fi BIBLIOGRAPHYURL="http:\\/\\/www.csci.csusb.edu\\/cgi-bin\\/dick\\/bib?from=$name\\&search=" htmlbase=`basename $htmlfile` mthbase=`basename $mthfile` if expr $mthfile : ".*/" >/dev/null then source=`expr $name : ".*/\([^/]*\)$"` else source=$name fi tmp=/tmp/mth2html$$; index=$tmp.index; contents=$tmp.contents trap "rm $tmp*" 1 2 3 # # extract contents list and index sed -n '/^\.[ OCNBSL]/p' $mthfile| ascii2html| awk 'BEGIN{n=0; } /^\.Open/{ for(i=1;i<=n;i++)$2=": " $2;n++; print} /^\. ./{ for(i=1;i<=n;i++)$2=": " $2; print} /^\.Close[^.]/||/^\.Close$/{n--; if(n<0)n=0; }'| sed -n 's/^\.Open *\([: ]*\)\(.*\)$/
. . . . . . . . . ( end of section \1<\/A>) <\/em>\<\<<\/A>Contents | Index\>\><\/A>/
/^\.Close/d
bdone
}
/^\.As_is/{
s/^\.As_is\(.*\)/ /
/|-/{
s/^[ ]*([ ]*)|-[ ]*/ (above)|-/
s/^[ ]*(\([^),]*\)\([^)]*\))[ ]*|-[ ]*/(\1<\/X>\2)|-/
:whileX
/<.X>/{
s/<.X>,[ ]*\([^),]*\)/<\/A>, \1<\/X>/
s/<.X>[ ]*)/<\/A>) /
bwhileX
}
/::/bdollars
s/^[ ]*|-[ ]*(\([^)][^)]*\)):[ ]*/\1<\/pre>/
bdone
}
s/^$/
(\1<\/A>): /
bnwff
}
/)::/!s/^(\([^)][^)]*\)):[ ]*/
(\1): /
/)::/!s/(\([^)][^)]*\)):[ ]*/(\1<\/A>): /
/::/!s/^[ ][ ]*/
/
/{.*}/!{
s/^[ ]*Let[ ]*{//
s/^[ ]*[pP]o[ ]*{/
/
s/^[ ]*Case[ ]*{/
/
s/^[ ]*Else[ ]*/
/
s/^\(.*\)Net[ ]*{[ ]*/\1
/
}
:ends
/{.*}/!{
s/^
\(}[.,]*\)[ ]*$/
\1<\/ol>/
s/^
\1<\/ol>/
s/^[ ]*\(}[.,]*\)[ ]*$/
\1<\/ol>/
/^[ ]*}=::./{
s/^[ ]*\(.*}=::\)[ ]*\(.*\)\.$/<\/ol><\/div>
\1\2<\/A>./
bdone
}
}
/^\.See /{
s/^\.See[ ]*mailto:\(.*\)\([,.:; ]*\)$/\1<\/A>\2/
s/^\.See[ ]*telnet:\(.*\)\([,.:; ]*\)$/\1<\/A>\2/
s/^\.See[ ]*ftp:\(.*\)\([,.:; ]*\)$/\1<\/A>\2/
s/^\.See[ ]*news:\(.*\)\([,.:; ]*\)$/\1<\/A>\2/
s/^\.See[ ]*file:\(.*\)\([,.:; ]*\)$/\1<\/A>\2/
s/^\.See \('$BIBLIOGRAPHYURL'\)#[ ]*\(.*\)[ ]*$/\[\2<\/cite><\/A>\]/
s/^\.See [ ]*\[\(.*\)\][ ]*$/\[\1<\/cite><\/A>\]/
s/^\.See [ ]*\[\(.*\)\]\(.*\)$/\[\1<\/cite><\/A>\]\2/
s/\/\/www\//\/\/'$WWWHOST'\//
s/\/\/web\//\/\/'$WEBHOST'\//
s/^\.See \(.*\):\(\/\/.*\)\/\([^/]*\)\.\([^.][^.]*\)#\(.*\)$/\[ \5 in \3<\/cite> <\/A>\]/
s/^\.See \(.*\):\(\/\/.*\)\/\([,.:; ][,.:; ]*\)$/\[ \1:\2\/<\/cite><\/A> \] \3 /
s/^\.See \(.*\):\(\/\/.*\)\/$/\[ \1:\2\/<\/cite> <\/A>\]/
s/^\.See \(.*\):\(\/\/.*\)\/\([^/]*\)\([,.:; ][,.:; ]*\)$/\[ \3<\/cite><\/A>\] \4 /
s/^\.See \(.*\):\(\/\/.*\)\/\([^/]*\)$/\[ \3<\/cite> <\/A>\]/
s/^\.See \(.*\):\(\/\/.*\)\/\([^/]*\)\.\([^.]*\)\([,.:; ][,.:; ]*\)$/\[ \3<\/cite><\/A>\] \5/
s/^\.See \(.*\):\(\/\/.*\)\/\([^/]*\)\.\([^.]*\)$/\[ \3<\/cite><\/A>\] /
s/^\.See \(.*\):\(\/[^/].*\)\([,.:; ][,.:; ]*\)$/ [\2]<\/A> \3/
s/^\.See \(.*\):\(\/[^/].*\)$/ [\2] <\/A>/
s/^\.See \(.*\)\([,.:; ][,.:; ]*\)$/\[ \1<\/cite><\/A>\] \2 /
s/^\.See \(.*\)$/\[ \1<\/cite> <\/A>\]/
bdone
}
/^\.Quiz [ ]*.*[ ][ ]*.*$/{
s/^\.Quiz [ ]*\(.*\)[ ][ ]*\(.*\)/?<\/A>/
bdone
}
/^\.Quiz /{
s/^\.Quiz [ ]*\(.*\)/?<\/A>/
bdone
}
:dollars
/^\.[ OC]/!s/$\([=A-Za-z\\][A-Za-z0-9_\\]*\)/\1<\/em><\/A>/g
/::/bdefs
/^[ ]/{ s/^[ ]\(.*\)$/
\1/
bdone
}
/^\./{
s/^\.Open\(.\) *\(.*\)$/
\1References<\/A><\/h2>/
s/^\.Set[ ]*$/
/
s/^\.Set *\(.*\)$/\1
Net/
s/^\.Net *\(.*\)$/
Net
Let/
s/^\.Let *\(.*\)$/
Let
Case/
s/^\.Case *\(.*\)$/
Case
(End of Case)
Case/
s/^\.Else *\(.*\)$/<\/ol>
(End of Case)
Case
Consider /
s/^\.Consider *\(.*\)$/
Consider/
s/^\.List *\(.*\)$/
/
s/^\.Tuple *\(.*\)$/
/
s/^\.Box *\(.*\)$/\1