Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added a test for 二〇 kanji to number conversion.

  • Loading branch information...
commit 5f5a9ea8d4c8c0754154ddaa668a8f89abbb51f6 1 parent 7fdec5c
@benkasminbullock authored
View
13 lib/Lingua/JA/FindDates.pm
@@ -72,12 +72,14 @@ sub kanji2number
my @values;
while (1) {
my $k = pop @kanjis;
- return $value if !$k;
+ return $value if ! defined $k;
my $val = $kanjinums{$k};
- if (!defined $val) {
+ # Make sure this kanji number is one we know how to handle.
+ if (! defined $val) {
warn "can't cope with '$k' of input '$knum'";
return 0;
}
+ # If the value of the individual kanji is more than 10.
if ($val >= 10) {
$keta = $val;
my $knext = pop @kanjis;
@@ -92,10 +94,13 @@ sub kanji2number
if ($val_next > 10) {
push @kanjis, $knext;
$value += $val;
- } else {
+ }
+ else {
$value += $val_next * $val;
}
- } else {
+ }
+ else {
+ # A kanji digit.
$value += $val * $keta;
$keta *= 10;
}
View
6 t/Lingua-JA-FindDates.t
@@ -2,7 +2,7 @@
use warnings;
use strict;
use utf8;
-use Test::More tests => 50;
+use Test::More tests => 51;
BEGIN { use_ok('Lingua::JA::FindDates') };
@@ -159,3 +159,7 @@ ok (subsjdate ($date_with_linebreak) =~ /2009\nNovember 4/,
# $Lingua::JA::FindDates::verbose = 1;
#print subsjdate ('\'79年4月21日');
ok (subsjdate ('\'79年4月21日') eq 'April 21, \'79', "Apostrophe dates");
+
+# Test for the "kanji zero".
+
+ok (subsjdate ('平成二〇年一二月二六日') eq 'December 26, 2008', "kanji zero handling");
View
117 t/Lingua-JA-FindDates.t.back
@@ -1,117 +0,0 @@
-
-use warnings;
-use strict;
-use utf8;
-use Test::More tests => 35;
-
-BEGIN { use_ok('Lingua::JA::FindDates') };
-
-use Lingua::JA::FindDates qw/kanji2number subsjdate/;
-
-#$JaDates::verbose = 1;
-
-# If you are on Cygwin on Japanese Windows, use the following:
-
-#binmode STDOUT,":encoding(cp932)";
-#binmode STDERR,":encoding(cp932)";
-binmode STDOUT,":utf8";
-binmode STDERR,":utf8";
-
-#print '百百三十五', "\n";
-#print JaDates::kanji2number ('3百三十五');
-ok (kanji2number ('3百三十五') == 0, 'bad kanji number failure test');
-ok (kanji2number ('二百三十五') == 235, 'kanji number');
-ok (kanji2number ('二三五') == 235, 'kanji number');
-ok (kanji2number ('二三五五') == 2355, 'kanji number');
-
-my @tests= qw/平成20年7月3日(木) H二十年七月三日(木曜日) 二千八年7月三日(木曜)/;
-for my $d (@tests) {
-# print subsjdate ($d);
- ok (subsjdate ($d) eq 'Thursday, July 3, 2008',
- 'year + month + day + weekday');
-}
-
-sub mymakedate
-{
- my ($year, $month, $date, $wday) = @_;
- return qw{Bad Mo Tu We Th Fr Sa Su}[$wday]." $year/$month/$date";
-}
-
-for my $d (@tests) {
-# print subsjdate ($d);
- ok (subsjdate ($d, undef, undef, \&mymakedate)
- eq 'Th 2008/7/3', 'makedate_callback');
-}
-
-my @tests2= ('昭和 41年 3月16日', 'S41年三月十六日', '千九百六十六年3月16日');
-for my $c (@tests2) {
-# print "$d, [>>",subsjdate ($d),"<<]\n";
- ok (subsjdate ($c) eq 'March 16, 1966', 'year + month + day combination');
-}
-my @tests3= ('昭和 41年', 'S41年', '千九百六十六年');
-for my $c (@tests3) {
-# print "$c, [>>",subsjdate ($c),"<<]\n";
- ok (subsjdate ($c) eq '1966', 'year combination');
-}
-my @tests4= ('3 月 16日', '三月十六日', '3月16日');
-for my $c (@tests4) {
-# print "$d, [>>",subsjdate ($d),"<<]\n";
- ok (subsjdate ($c) eq 'March 16', 'month + day combination');
-}
-
-my $test5 =<<EOF;
-2008年07月03日 01:39:21 投稿
-【西村修平・桜井誠編】平成20年7月2日毎日新聞社前抗議行動!
-最低賃金法が大きく改正され、平成20年7月1日から施行されました。
-平成二十年七月四日
-Opera 9.51(Windows版)を入れてみたけれども相變らず使ひ物にならない。何なんだらう。
-日本義塾 平成二十年七月公開講義
-公開日時:2008年06月28日 01時09分
-更新日時:2008年06月29日 00時08分
-
-◎【日本義塾七月公開講義】
-
- ◎日 時 平成二十年七月二十五日(金)
-      午後六時半~九時(六時開場)
-H20年7月壁紙
-7月壁紙(1024×768)を作成しました(クリックすると拡大します)。
-昭和49年度
-1999年度
-EOF
-
-my %jdates =
-(
-'2008年07月03日' =>'July 3, 2008',
-'平成20年7月2日' =>'July 2, 2008',
-'平成20年7月1日' =>'July 1, 2008',
-'平成二十年七月四日' =>'July 4, 2008',
-'平成二十年七月' =>'July 2008',
-'2008年06月28日' =>'June 28, 2008',
-'2008年06月29日' =>'June 29, 2008',
-'平成二十年七月二十五日(金)' =>'Friday, July 25, 2008',
-'H20年7月' => 'July 2008',
-'7月' => 'July',
-'七月' => 'July',
-'昭和49年度' => 'fiscal 1974',
-'1999年度' => 'fiscal 1999',
-);
-
-sub replace_callback
-{
- my ($data, $jdate, $edate) = @_;
-# print "[$jdate] [$edate] [$jdates{$jdate}]\n";
- ok ($jdates{$jdate} eq $edate, "replace_callback");
-}
-
-subsjdate ($test5, \&replace_callback);
-
-ok ($Lingua::JA::FindDates::verbose == 0, 'verbose option switched off by default');
-
-# Test there is no weird match to a following word.
-
-my $has_newline =<<EOF;
-平成二十年七月一日
- 日本論・日本人論は非常に面白いものだ。
-EOF
-
-ok (subsjdate($has_newline) !~ 'Sunday', 'do not match next kanji if it\'s not a weekday');
Please sign in to comment.
Something went wrong with that request. Please try again.