File Coverage

blib/lib/Lingua/ZH/ZhuYin/Dict.pm
Criterion Covered Total %
statement 32 32 100.0
branch 3 6 50.0
condition 2 4 50.0
subroutine 6 6 100.0
pod 2 2 100.0
total 45 50 90.0


line stmt bran cond sub pod time code
1             package Lingua::ZH::ZhuYin::Dict;
2              
3 2     2   12 use warnings;
  2         4  
  2         59  
4 2     2   11 use strict;
  2         3  
  2         87  
5              
6             =head1 NAME
7              
8             Lingua::ZH::ZhuYin::Dict - The backend dictionary for converting zhuyin
9              
10             =head1 VERSION
11              
12             Version 0.03
13              
14             =cut
15              
16             our $VERSION = 0.03;
17 2     2   6254 use DBI qw(:sql_types);
  2         40246  
  2         1371  
18 2     2   2782 use DBD::SQLite;
  2         36891  
  2         626  
19              
20             =head1 SYNOPSIS
21              
22             Quick summary of what the module does.
23              
24             Perhaps a little code snippet.
25              
26             use Lingua::ZH::ZhuYin::Dict;
27              
28             my $zhuyin = Lingua::ZH::ZhuYin::Dict::QueryZuyin($word);
29             ...
30              
31             =head1 EXPORT
32              
33             A list of functions that can be exported. You can delete this section
34             if you don't export anything, such as for a purely object-oriented module.
35              
36             =head1 FUNCTIONS
37              
38             =head2 new
39              
40             =cut
41              
42             sub new {
43 2     2 1 4 my $class = shift;
44 2         7 my $self = {
45             table => undef,
46             dbh => undef,
47             };
48 2   50     6 my $dictFile = shift || 'moedict.db';
49 2 50       52 if ( -f $dictFile ) {
50 2         6 my $dsn = "dbi:SQLite:dbname=$dictFile";
51 2         18 $self->{dbh} = DBI->connect($dsn, "","");
52             }
53 2         2226 ($self->{table}) = ($dictFile =~ /(\w+)\.db/);
54 2   50     8 $self->{table} ||= 'moedict';
55 2         6 bless ($self, $class);
56 2         6 return($self);
57             }
58              
59             =head2 queryZhuYin
60              
61             =cut
62              
63             sub queryZhuYin {
64 2     2 1 2 my $self = shift;
65 2         4 my $word = shift;
66              
67 2 50       9 return unless $self->{dbh};
68              
69 2         2 my @zhuyins;
70 2         4 my $table = $self->{table};
71 2         14 my $sth = $self->{dbh}->prepare("SELECT zhuyin from $table WHERE word = ?");
72 2 50       794 $sth->execute($word) || die DBI::err.": ".$DBI::errstr;
73 2         84 while (my $hash_ref = $sth->fetchrow_hashref) {
74 2         26 push @zhuyins, $hash_ref->{zhuyin};
75             }
76 2         55 return @zhuyins;
77             }
78              
79             =head1 AUTHOR
80              
81             Cheng-Lung Sung, C<< >>
82              
83             =head1 ACKNOWLEDGEMENTS
84              
85              
86             =head1 COPYRIGHT & LICENSE
87              
88             Copyright 2008 Cheng-Lung Sung, all rights reserved.
89              
90             This program is free software; you can redistribute it and/or modify it
91             under the same terms as Perl itself.
92              
93              
94             =cut
95              
96             1; # End of Lingua::ZH::ZhuYin::Dict