summaryrefslogtreecommitdiff
path: root/ipl/procs/bold.icn
diff options
context:
space:
mode:
Diffstat (limited to 'ipl/procs/bold.icn')
-rw-r--r--ipl/procs/bold.icn58
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