Sledge::Plugin::JapanesePrefectures

今日のCPAN。(うそ


package Sledge::Plugin::JapanesePrefectures;
use strict;
use warnings;
use Geography::JapanesePrefectures;
use List::MoreUtils qw/uniq firstval/;
use Jcode;

sub import {
my $self = shift;
my $pkg = caller;

no strict 'refs';
*{"$pkg\::prefectures"} = \&_prefectures;
*{"$pkg\::prefectures_name_for_id"} = \&_prefecture_name_for_id;
*{"$pkg\::prefectures_name"} = \&_prefectures_name;
*{"$pkg\::prefectures_regions"} = \&_prefectures_regions;
*{"$pkg\::prefectures_name_for_region"} = \&_prefectures_name_for_region;
*{"$pkg\::prefectures_id_for_name"} = \&_prefectures_id_for_name;
}

sub _prefectures {
my ($self, $args) = @_;
my $encoding = $args->{encoding};

return map { {
id => $_->{id} ,
name => Jcode->new($_->{name})->$encoding,
region => Jcode->new($_->{region})->$encoding,
} } @$Geography::JapanesePrefectures::PREFECTURES;
}

sub _prefecture_name_for_id {
my ($self, $args) = @_;
my $encoding = $args->{encoding};

my $pref = firstval { $_->{id} } grep { $_->{id} eq $args->{id} } @$Geography::JapanesePrefectures::PREFECTURES;
return Jcode->new($pref->{name})->$encoding;
}

sub _prefectures_name {
my ($self, $args) = @_;
my $encoding = $args->{encoding};

return map { Jcode->new($_->{name})->$encoding } @$Geography::JapanesePrefectures::PREFECTURES;
}

sub _prefectures_regions {
my ($self, $args) = @_;
my $encoding = $args->{encoding};

return uniq map { Jcode->new($_->{region})->$encoding } @$Geography::JapanesePrefectures::PREFECTURES;
}

sub _prefectures_name_for_region {
my ($self, $args) = @_;
my $encoding = $args->{encoding};

return map { Jcode->new($_->{name})->$encoding }
grep { $_->{region} eq Jcode->new($args->{region})->utf8 }
@$Geography::JapanesePrefectures::PREFECTURES;
}

sub _prefectures_id_for_name {
my ($self, $args) = @_;

my $pref = firstval {$_->{id}} grep { $_->{name} eq Jcode->new($args->{name})->utf8 } @$Geography::JapanesePrefectures::PREFECTURES ;
return $pref->{id};
}

1;
__END__
=head1 NAME

Sledge::Plugin::JapanesePrefectures - Geography::JapanesePrefectures's data easy use for Sledge

=head1 VERSION

This documentation refers to Sledge::Plugin::JapanesePrefectures version 0.01

=head1 SYNOPSIS

package Your::Pages;
use Sledge::Plugin::JapanesePrefectures;

sub dispatch_index {
my $self = shift;
my @prefs_all = $self->prefectures({ encoding => 'euc' });
my @pref_names = $self->prefectures_name({ encoding => 'euc' });
my @pref_regions = $self->prefectures_regions({ encoding => 'euc' });
my @pref_name_for_region = $self->prefectures_name_for_region({ region => '東北', encoding => 'euc' });
my $id = $self->prefectures_id_for_name({ name => '京都府' });
my $name = $self->prefectures_name_for_id({ id=> 2 , encoding => 'euc' });
}

=head1 METHODS

=head2 prefectures

This method get Geography::JapanesePrefectures's all data.

=head2 prefectures_name

This method get Geography::JapanesePrefectures's name data.

=head2 prefectures_regions

This method get Geography::JapanesePrefectures's region data.

=head2 prefectures_name_for_region

This method get Geography::JapanesePrefectures's name data for region.

=head2 prefectures_id_for_name

This method get Geography::JapanesePrefectures's id data for name.

=head2 prefectures_name_for_id

This method get Geography::JapanesePrefectures's name data for id.

=head1 AUTHOR

Atsushi Kobayashi, C<< >>

=head1 BUGS

Please report any bugs or feature requests to
C, or through the web interface at
Lhttp://rt.cpan.org/noauth/reportbug.html?queue=sledge-plugin-redirectreferer.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.

=cut

Geography::JapanesePrefecturesのデータしかつかってないw
そしてDRYじゃないなぁ。とかとか。