diff options
Diffstat (limited to 'ipl/procs/bold.icn')
-rw-r--r-- | ipl/procs/bold.icn | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/ipl/procs/bold.icn b/ipl/procs/bold.icn new file mode 100644 index 0000000..5764f4d --- /dev/null +++ b/ipl/procs/bold.icn @@ -0,0 +1,58 @@ +############################################################################ +# +# File: bold.icn +# +# Subject: Procedures to embolden and underscore text +# +# Author: Ralph E. Griswold +# +# Date: March 25, 2002 +# +############################################################################ +# +# This file is in the public domain. +# +############################################################################ +# +# These procedures produce text with interspersed characters suit- +# able for printing to produce the effect of boldface (by over- +# striking) and underscoring (using backspaces). +# +# bold(s) bold version of s +# +# uscore(s) underscored version of s +# +############################################################################ + +procedure bold(s) + local c + static labels, trans, max + initial { + labels := "1" + trans := repl("1\b",4) || "1" + max := *labels + trans := bold(string(&lcase)) + labels := string(&lcase) + max := *labels + } + if *s <= max then + return map(left(trans,9 * *s),left(labels,*s),s) + else return bold(left(s,*s - max)) || + map(trans,labels,right(s,max)) +end + +procedure uscore(s) + static labels, trans, max + initial { + labels := "1" + trans := "_\b1" + max := *labels + trans := uscore(string(&lcase)) + labels := string(&lcase) + max := *labels + } + if *s <= max then + return map(left(trans,3 * *s),left(labels,*s),s) + else return uscore(left(s,*s - max)) || + map(trans,labels,right(s,max)) +end |