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 NAMESledge::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じゃないなぁ。とかとか。