AozoraBunko-Checkerkun
view release on metacpan or search on metacpan
lib/AozoraBunko/Checkerkun.pm view on Meta::CPAN
package AozoraBunko::Checkerkun;
our $VERSION = "0.12";
use 5.008001;
use strict;
use warnings;
use utf8;
use Carp qw//;
use File::ShareDir qw//;
use YAML::Tiny qw//;
use Encode qw//;
use Lingua::JA::Halfwidth::Katakana;
my $YAML_FILE = File::ShareDir::dist_file('AozoraBunko-Checkerkun', 'hiden_no_tare.yml');
my $YAML = YAML::Tiny->read($YAML_FILE)->[0];
my $ENC = Encode::find_encoding("Shift_JIS");
my %VALID_OUTPUT_FORMAT;
@VALID_OUTPUT_FORMAT{qw/plaintext html/} = ();
# [78hosetsu_tekiyo] 78äºæå
æã®å¯¾è±¡ã¨ãªãä¸è¦ãªå¤å注è¨ããã§ãã¯ãã
our $KUTENMEN_78HOSETSU_TEKIYO = $YAML->{'kutenmen_78hosetsu_tekiyo'};
# [hosetsu_tekiyo] å
æã®å¯¾è±¡ã¨ãªãä¸è¦ãªå¤å注è¨ããã§ãã¯ãã
our $KUTENMEN_HOSETSU_TEKIYO = $YAML->{'kutenmen_hosetsu_tekiyo'};
# æ°JISæ¼¢åã§å
æåºæºã®é©ç¨é¤å¤ã¨ãªã104å
our $JYOGAI = $YAML->{'jyogai'};
# 78äºææå
our $J78 = $YAML->{'j78'};
# ééããããæå
# ãã¨ããããããã®ã誤èªèãããããæåãªã¹ãããã
# http://plaza.users.to/katokao/digipr/digipr_charlist.html
our $GONIN1 = $YAML->{'gonin1'};
# 誤èª2
our $GONIN2 = $YAML->{'gonin2'};
# 誤èª3
# ï¼ç å ´æ¸
éããã®å
¥åã«ããï¼
our $GONIN3 = $YAML->{'gonin3'};
# æ°åä½ã»æ§åä½å¯¾å¿ãªã¹ã
our $KYUJI = $YAML->{'kyuji'};
# ç°ä½å
our $ITAIJI = $YAML->{'itaiji'};
sub _default_options
{
return {
'gaiji' => 1, # JISå¤åããã§ãã¯ãã
'hansp' => 1, # åè§ã¹ãã¼ã¹ããã§ãã¯ãã
'hanpar' => 1, # åè§ã«ãã³ããã§ãã¯ãã
'zensp' => 0, # å
¨è§ã¹ãã¼ã¹ããã§ãã¯ãã
'zentilde' => 1, # å
¨è§ãã«ãããã§ãã¯ãã
'78hosetsu_tekiyo' => 1, # 78äºæå
æã®å¯¾è±¡ã¨ãªãä¸è¦ãªå¤å注è¨ããã§ãã¯ãã
'hosetsu_tekiyo' => 1, # å
æã®å¯¾è±¡ã¨ãªãä¸è¦ãªå¤å注è¨ããã§ãã¯ãã
'78' => 0, # 78äºæå
æ29åããã§ãã¯ãã
'jyogai' => 0, # æ°JISæ¼¢åã§å
æè¦æºã®é©ç¨é¤å¤ã¨ãªã104åããã§ãã¯ãã
'gonin1' => 0, # 誤èªããããæåããã§ãã¯ãã(1)
'gonin2' => 0, # 誤èªããããæåããã§ãã¯ãã(2)
'gonin3' => 0, # 誤èªããããæåããã§ãã¯ãã(3)
'simplesp' => 0, # åè§ã¹ãã¼ã¹ã¯ã_ãã§ãå
¨è§ã¹ãã¼ã¹ã¯ãâ¡ãã§åºåãã
lib/AozoraBunko/Checkerkun.pm view on Meta::CPAN
elsif ($output_format eq 'html')
{
$checked_text .= _tag_html($char, 'gonin1', $GONIN1->{$char});
}
}
elsif ($self->{'gonin2'} && $GONIN2->{$char})
{
if ($output_format eq 'plaintext')
{
$checked_text .= $char . '[gonin2]ï¼' . $GONIN2->{$char} . 'ï¼';
}
elsif ($output_format eq 'html')
{
$checked_text .= _tag_html($char, 'gonin2', $GONIN2->{$char});
}
}
elsif ($self->{'gonin3'} && $GONIN3->{$char})
{
if ($output_format eq 'plaintext')
{
$checked_text .= $char . '[gonin3]ï¼' . $GONIN3->{$char} . 'ï¼';
}
elsif ($output_format eq 'html')
{
$checked_text .= _tag_html($char, 'gonin3', $GONIN3->{$char});
}
}
elsif ( $self->{'gaiji'} && _is_gaiji($char) )
{
# ç§ä¼ã®ã¿ã¬ã«å¤åãå«ã¾ãã¦ããªããã¨ããã¹ãã§ä¿è¨¼ããã¦ããã®ã§ãã®ä½ç½®ã§åé¡ãªã
# ã³ã³ããã¼ã«æåã«å¤åãããããã³ã³ããã¼ã«æåãªãå¿
ã 'ctrl' ã¨ã¿ã°ä»ããããã®ã§ããã§è¯ãã¨ããã
if ($output_format eq 'plaintext')
{
$checked_text .= $char . '[gaiji]';
}
elsif ($output_format eq 'html')
{
$checked_text .= _tag_html($char, 'gaiji', 'JISå¤å');
}
}
else { $checked_text .= $char; }
}
}
return $checked_text;
}
1;
__END__
=encoding utf-8
=head1 NAME
AozoraBunko::Checkerkun - é空æåº«ã®å·¥ä½å¡ã®ããã®æåãã§ãã«ã¼ï¼ä½ï¼çµå浩ï¼ãã©ã¤ãã©ãªåãããã®
=head1 SYNOPSIS
use AozoraBunko::Checkerkun;
use utf8;
my $checker1 = AozoraBunko::Checkerkun->new;
$checker1->check('森â»ï¼»ï¼ãåï¼é³¥ãã第3æ°´æº1-94-69ï¼½å¤ð'); # => '森â»ï¼»ï¼ãåï¼é³¥ãã第3æ°´æº1-94-69ï¼½â[78hosetsu_tekiyo]ãé´ãå¤ð[gaiji]'
$checker1->check('森é·å¤'); # => '森é·[gaiji]å¤'
$checker1->check('森é´å¤'); # => '森é´å¤'
my $checker2 = AozoraBunko::Checkerkun->new({ output_format => 'html', gonin1 => 1, gonin2 => 1, gonin3 => 1 });
$checker2->check('æ¡ãããæ±ãå£ããã'); # => '<span data-checkerkun-tag="gonin3" data-checkerkun-message="ãã¤ã">æ¡</span>ããã<span data-checkerkun-tag="gonin3" data-checkerkun-message="ã¯ãã">æ±</span>ãå£ããã'
my $checker3 = AozoraBunko::Checkerkun->new({ kouetsukun => 1 });
$checker3->check('è®ãã'); # => 'â¼è®èªç±â²ãã'
=head1 DESCRIPTION
AozoraBunko::Checkerkun ã¯ãé空æåº«å·¥ä½å¡ã®ããã®æåãã§ãã«ã¼ã§ãçµå浩æ°ã使ããã¹ã¯ãªãããç§ãã©ã¤ãã©ãªåãããã®ã§ãã
大éè£ã»çµå浩ã»ã¼ãã¡ã¼çã®åæ°ã«ããæ§åä½ç½®æå¯è½ãã§ãã«ã¼ãæ ¡é²åãããã®ã©ã¤ãã©ãªã«çµã¿è¾¼ã¾ãã¦ãã¾ãã
=head1 METHODS
=head2 $checker = AozoraBunko::Checkerkun->new(\%option)
æ°ãã AozoraBunko::Checkerkun ã¤ã³ã¹ã¿ã³ã¹ãçæãã¾ãã
my $checker = AozoraBunko::Checkerkun->new(
'gaiji' => 1, # JISå¤åããã§ãã¯ãã
'hansp' => 1, # åè§ã¹ãã¼ã¹ããã§ãã¯ãã
'hanpar' => 1, # åè§ã«ãã³ããã§ãã¯ãã
'zensp' => 0, # å
¨è§ã¹ãã¼ã¹ããã§ãã¯ãã
'zentilde' => 1, # å
¨è§ãã«ãããã§ãã¯ãã
'78hosetsu_tekiyo' => 1, # 78äºæå
æã®å¯¾è±¡ã¨ãªãä¸è¦ãªå¤å注è¨ããã§ãã¯ãã
'hosetsu_tekiyo' => 1, # å
æã®å¯¾è±¡ã¨ãªãä¸è¦ãªå¤å注è¨ããã§ãã¯ãã
'78' => 0, # 78äºæå
æ29åããã§ãã¯ãã
'jyogai' => 0, # æ°JISæ¼¢åã§å
æè¦æºã®é©ç¨é¤å¤ã¨ãªã104åããã§ãã¯ãã
'gonin1' => 0, # 誤èªããããæåããã§ãã¯ãã(1)
'gonin2' => 0, # 誤èªããããæåããã§ãã¯ãã(2)
'gonin3' => 0, # 誤èªããããæåããã§ãã¯ãã(3)
'simplesp' => 0, # åè§ã¹ãã¼ã¹ã¯ã_ãã§ãå
¨è§ã¹ãã¼ã¹ã¯ãâ¡ãã§åºåãã
'kouetsukun' => 0, # æ§åä½ç½®æå¯è½ãã§ãã«ã¼ãæ ¡é²åããæå¹ã«ããï¼htmlåºåæã¯ kyuji ã itaiji ã®ãã§ãã«ã¼åã¿ã°æ
å ±ãä»ãã¾ããï¼
'output_format' => 'plaintext', # åºåãã©ã¼ãããï¼plaintext ã¾ã㯠htmlï¼
);
ä¸è¨ã®ã³ã¼ãã§è¨å®ããã¦ããå¤ãããã©ã«ãå¤ã§ãã
=head2 $checked_text = $checker->check($text)
new ã§æå®ãããªãã·ã§ã³ã§ããã¹ãããã§ãã¯ãã¾ããæ»ãå¤ã¯ãã§ãã¯å¾ã®ããã¹ãã§ãã
=head1 ç§ä¼ã®ã¿ã¬ï¼æåãã§ãã¯ç¨ããã·ã¥ãªãã¡ã¬ã³ã¹ï¼ã¸ã®ã¢ã¯ã»ã¹
ãã®ã¢ã¸ã¥ã¼ã«ã use ããã¨ä»¥ä¸ã®æåãã§ãã¯ç¨ããã·ã¥ãªãã¡ã¬ã³ã¹ã¸ã¢ã¯ã»ã¹å¯è½ã«ãªãã¾ãã
# 78äºæå
æã®å¯¾è±¡ã¨ãªãä¸è¦ãªå¤å注è¨ããã§ãã¯ãã
$AozoraBunko::Checkerkun::KUTENMEN_78HOSETSU_TEKIYO;
# å
æã®å¯¾è±¡ã¨ãªãä¸è¦ãªå¤å注è¨ããã§ãã¯ãã
$AozoraBunko::Checkerkun::KUTENMEN_HOSETSU_TEKIYO;
# æ°JISæ¼¢åã§å
æåºæºã®é©ç¨é¤å¤ã¨ãªã104å
$AozoraBunko::Checkerkun::JYOGAI;
( run in 1.114 second using v1.01-cache-2.11-cpan-aadc1410aed )