Name

roman — transform input integer to Roman numerals

DESCRIPTION

The filter transforms input integer to Roman numerals.

EXAMPLES

Example: Filter example

[filter roman]2005[/filter]
Example in action:
              MMV
            

NOTES

AVAILABILITY

roman is available in Interchange versions:

4.6.0-5.9.0 (git-head)

SOURCE

Interchange 5.9.0:

Source: code/Filter/roman.filter
Lines: 37


# Copyright 2005 Cursor Software Limited (http://www.cursor.biz/)
# Copyright 2005-2007 Interchange Development Group and others
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.  See the LICENSE file for details.
# 
# $Id: roman.filter,v 1.4 2007-03-30 23:40:45 pajamian Exp $

CodeDef roman Filter
CodeDef roman Description Integer to Roman numerals
CodeDef roman Visibility  private
CodeDef roman Routine     <<EOR
sub {
my $val = shift;

$val =~ s/\D+//g;
return '' unless $val;

$val =~ m/(\d*?)(\d{1,3})$/ or return '';

my $buf = 'M' x ($1 || 0);
my @digits = reverse(split('',$2));

my @numerals = (
    [ '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', ],
    [ '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', ],
    [ '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', ],
);

for (my $i = $#digits; $i >= 0; $i--) {
    $buf .= $numerals[$i]->[$digits[$i]];
}
return $buf;
}
EOR

AUTHORS

SEE ALSO

DocBook! Interchange!