From daf298f347a3b7244d897dd12d2fccb3cda746cf Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 7 Jun 2009 00:24:01 -0500 Subject: transliteration types should get their own packages --- lib/Lingua/HI/Romanize.pm | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/lib/Lingua/HI/Romanize.pm b/lib/Lingua/HI/Romanize.pm index 8dfdda9..694dd48 100644 --- a/lib/Lingua/HI/Romanize.pm +++ b/lib/Lingua/HI/Romanize.pm @@ -11,43 +11,39 @@ has unicode => ( has default_ascii => ( is => 'ro', isa => 'Str', - default => 'itrans', + default => 'ITRANS', ); has default_unicode => ( is => 'ro', isa => 'Str', - default => 'iast', + default => 'IAST', ); sub romanize { my $self = shift; - my $method = "romanize_"; + my ($text) = @_; + my $package = 'Lingua::HI::Romanize::'; if ($self->unicode) { - $method .= $self->default_unicode; + $package .= $self->default_unicode; } else { - $method .= $self->default_ascii; + $package .= $self->default_ascii; } - return $self->$method(@_); -} - -sub romanize_iast { -} - -sub romanize_kolkata { -} - -sub romanize_iso15919 { -} - -sub romanize_harvard_kyoto { -} - -sub romanize_itrans { -} - -sub romanize_velthuis { + my %translit = %{ $package->TRANSLIT }; + my $output = ''; + for my $word (split /\b/s, $text) { + for my $char (split //, $word) { + if (exists $translit{$char}) { + $output .= $translit{$char}; + } + else { + $output .= $char; + } + } + # XXX: word-final 'a' should be stripped + } + return $output; } 1; -- cgit v1.2.3-54-g00ecf