summaryrefslogtreecommitdiff
path: root/itcl/iwidgets/generic/roman.itcl
diff options
context:
space:
mode:
Diffstat (limited to 'itcl/iwidgets/generic/roman.itcl')
-rw-r--r--itcl/iwidgets/generic/roman.itcl29
1 files changed, 29 insertions, 0 deletions
diff --git a/itcl/iwidgets/generic/roman.itcl b/itcl/iwidgets/generic/roman.itcl
new file mode 100644
index 00000000000..263f574eb26
--- /dev/null
+++ b/itcl/iwidgets/generic/roman.itcl
@@ -0,0 +1,29 @@
+namespace eval ::iwidgets {
+ variable romand
+ set romand(val) {1000 900 500 400 100 90 50 40 10 9 5 4 1}
+ set romand(upper) { M CM D CD C XC L XL X IX V IV I}
+ set romand(lower) { m cm d cd c xc l xl x ix v iv i}
+
+ proc roman2 {n {case upper}} {
+ variable romand
+ set r ""
+ foreach val $romand(val) sym $romand($case) {
+ while {$n >= $val} {
+ set r "$r$sym"
+ incr n -$val
+ }
+ }
+ return $r
+ }
+
+ proc roman {n {case upper}} {
+ variable romand
+ set r ""
+ foreach val $romand(val) sym $romand($case) {
+ for {} {$n >= $val} {incr n -$val} {
+ set r "$r$sym"
+ }
+ }
+ return $r
+ }
+}