X-Git-Url: https://git.donarmstrong.com/?p=deb_pkgs%2Flibhtml-calendarmonth-perl.git;a=blobdiff_plain;f=1.17%2Flib%2FHTML%2FCalendarMonth%2FLocale.pm;fp=1.17%2Flib%2FHTML%2FCalendarMonth%2FLocale.pm;h=0000000000000000000000000000000000000000;hp=bb45bb3755d00aaa356e388173a7bd6c86043cef;hb=ed44be48bb467d82127717d1ae2d11890aaf329b;hpb=982e2bb08f00d800e2cd9fb65b108231719c8a65 diff --git a/1.17/lib/HTML/CalendarMonth/Locale.pm b/1.17/lib/HTML/CalendarMonth/Locale.pm deleted file mode 100644 index bb45bb3..0000000 --- a/1.17/lib/HTML/CalendarMonth/Locale.pm +++ /dev/null @@ -1,302 +0,0 @@ -package HTML::CalendarMonth::Locale; - -# Front end class around DateTime::Locale. In addition to providing -# access to the DT::Locale class and locale-specific instance, this -# class prepares some other hashes and lookups utilized by -# HTML::CalendarMonth. - -use strict; -use Carp; - -use DateTime::Locale; - -use vars qw($VERSION); -$VERSION = '0.01'; - -my %Register; - -sub new { - my $class = shift; - my $self = {}; - bless $self, $class; - my %parms = @_; - my $id = $parms{id} or croak "Locale id required (eg 'en_US')\n"; - $self->{id} = $id; - $self->{full_days} = exists $parms{full_days} ? $parms{full_days} : 0; - $self->{full_months} = exists $parms{full_months} ? $parms{full_months} : 1; - unless ($Register{$id}) { - $Register{$id} = $self->locale->load($id) - or croak "Problem loading locale '$id'\n"; - } - $self; -} - - -sub locale { 'DateTime::Locale' } - -sub loc { $Register{shift->id} } - -sub locales { shift->locale->ids } - -sub id { shift->{id} } -sub full_days { shift->{full_days} } -sub full_months { shift->{full_months} } - -sub days { - my $self = shift; - my $id = $self->id; - unless ($Register{$id}{days}) { - # we've always used Sunday as first day... - my $method = $self->full_days ? 'day_names' : 'day_abbreviations'; - my @days = @{$self->loc->$method}; - unshift(@days, pop @days); - $Register{$id}{days} = \@days; - } - wantarray ? @{$Register{$id}{days}} : $Register{$id}{days}; -} - -sub months { - my $self = shift; - my $id = $self->id; - unless ($Register{$id}{months}) { - my $method = $self->full_months ? 'month_names' : 'month_abbreviations'; - $Register{$id}{months} = [@{$self->loc->$method}]; - } - wantarray ? @{$Register{$id}{months}} : $Register{$id}{months}; -} - -sub minmatch { - my $self = shift; - my $id = $self->id; - unless ($Register{$id}{minmatch}) { - $Register{$id}{days_minmatch} = - $self->minmatch_hash(@{$self->days}); - } - $Register{$id}{days_minmatch}; -} - -sub daynums { - my $self = shift; - my $id = $self->id; - unless ($Register{$id}{daynum}) { - my %daynum; - my $days = $self->days; - $daynum{$days->[$_]} = $_ foreach 0 .. $#$days; - $Register{$id}{daynum} = \%daynum; - } - $Register{$id}{daynum}; -} - -sub daynum { - my($self, $day) = @_; - defined $day or croak "day of week label required\n"; - my $days = $self->days; - $days->{$day} or croak "Failed daynum lookup for '$day'\n"; -} - -sub monthnums { - my $self = shift; - my $id = $self->id; - unless ($Register{$id}{monthnum}) { - my %monthnum; - my $months = $self->months; - $monthnum{$months->[$_]} = $_ foreach 0 .. $#$months; - $Register{$id}{monthnum} = \%monthnum; - } - $Register{$id}{monthnum}; -} - -sub monthnum { - my($self, $month) = @_; - defined $month or croak "month label required\n"; - my $monthnums = $self->monthnums; - $monthnums->{$month} or croak "Failed monthnum lookup for '$month'\n"; -} - -### - -sub locale_map { - my $self = shift; - my %map; - foreach my $id ($self->locales) { - $map{$id} = $self->locale->load($id)->name; - } - wantarray ? %map : \%map; -} - -### - -sub minmatch_hash { - # given a list, provide a reverse lookup of minimal values for each - # label in the list - my $whatever = shift; - my @labels = @_; - my $cc = 1; - my %minmatch; - while (@labels) { - my %scratch; - foreach my $i (0 .. $#labels) { - my $str = $labels[$i]; - my $chrs = substr($str, 0, $cc); - $scratch{$chrs} ||= []; - push(@{$scratch{$chrs}}, $i); - } - my @keep_i; - foreach (keys %scratch) { - if (@{$scratch{$_}} == 1) { - $minmatch{$_} = $labels[$scratch{$_}[0]]; - } - else { - push(@keep_i, @{$scratch{$_}}); - } - } - @labels = @labels[@keep_i]; - ++$cc; - } - \%minmatch; -} - -sub minmatch_pattern { join('|',keys %{shift->minmatch}) } - -1; - -__END__ - -=head1 NAME - -HTML::CalendarMonth::Locale - Front end class for DateTime::Locale - -=head1 SYNOPSIS - - use HTML::CalendarMonth::Locale; - - my $loc = HTML::CalendarMonth::Locale->new( id => 'en_US' ); - - # list of days of the week for locale - my @days = $loc->days; - - # list of months of the year for locale - my @months = $loc->months; - - # the name of the current locale, as supplied the id parameter to - # new() - my $locale_name = $loc->id; - - # the actual DateTime::Locale object - my $loc = $loc->loc; - - 1; - -=head1 DESCRIPTION - -HTML::CalendarMonth utilizes the powerful locale capabilities of -DateTime::Locale for rendering its calendars. The default locale is -'en_US' but many others are available. To see this list, invoke the -class method HTML::CalendarMonth::Locale->locales() which in turn -invokes DateTime::Locale::ids(). - -This module is mostly intended for internal usage within -HTML::CalendarMonth, but some of its functionality may be of use for -developers: - -=head1 METHODS - -=item new() - -Constructor. Takes the following parameters: - -=over - -=item id - -Locale id, e.g. 'en_US'. - -=item full_days - -Specifies whether full day names or their abbreviations are desired. -Default 0, use abbreviated days. - -=item full_months - -Specifies whether full month names or their abbreviations are desired. -Default 1, use full months. - -=back - -=item id() - -Returns the locale id used during object construction. - -=item locale() - -Accessor method for the DateTime::Locale class, which in turn offers -several class methods of specific interest. See L. - -=item loc() - -Accessor method for the DateTime::Locale instance as specified by C. -See L. - -=item locales() - -Lists all available locale ids. Equivalent to locale()->ids(), or -DateTime::Locale->ids(). - -=item days() - -Returns a list of days of the week, Sunday first. These are the actual -days used for rendering the calendars, so depending on which attributes -were provided to C, this list will either be abbreviations or -full names. The default uses abbreviated day names. Returns a list in -list context or an array ref in scalar context. - -=item months() - -Returns a list of months of the year, beginning with January. Depending -on which attributes were provided to C, this list will either be -full names or abbreviations. The default uses full names. Returns a list -in list context or an array ref in scalar context. - -=item minmatch() - -Provides a hash reference containing minimal match strings for each -month of the year, e.g., 'N' for November, 'Ja' for January, 'Jul' for -July, 'Jun' for June, etc. - -=item daynums() - -Provides a hash reference containing day of week numbers for each day -name. - -=item daynum($day) - -Provides the day of week number for a particular day name. - -=item monthnums() - -Provides a hash reference containing month of year numbers for each -month name. - -=item monthnum($month) - -Provides the month of year number for a particular month name. - -=item minmatch_hash(@list) - -This is the method used to generate the minimal match hash referenced -above. Given an arbitrary list, a hash reference will be returned with -minimal match strings as keys and full names as values. - -=head1 AUTHOR - -Matthew P. Sisk, EFE - -=head1 COPYRIGHT - -Copyright (c) 2005 Matthew P. Sisk. All rights reserved. All wrongs -revenged. This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=head1 SEE ALSO - -HTML::CalendarMonth(3), DateTime::Locale(3)