File Coverage

blib/lib/Lingua/HIN/Word2Num.pm
Criterion Covered Total %
statement 20 21 95.2
branch n/a
condition 2 2 100.0
subroutine 8 9 88.8
pod 3 3 100.0
total 33 35 94.2


line stmt bran cond sub pod time code
1             # For Emacs: -*- mode:cperl; eval: (folding-mode 1); coding:utf-8 -*-
2             package Lingua::HIN::Word2Num;
3             # ABSTRACT: Word to number conversion in Hindi
4              
5 1     1   112260 use 5.16.0;
  1         5  
6 1     1   6 use utf8;
  1         3  
  1         13  
7 1     1   33 use warnings;
  1         3  
  1         73  
8              
9             # {{{ use block
10              
11 1     1   692 use Export::Attrs;
  1         9572  
  1         7  
12 1     1   1146 use Parse::RecDescent;
  1         44689  
  1         6  
13              
14             # }}}
15             # {{{ var block
16             our $VERSION = '0.2603300';
17             my $parser = hin_numerals();
18              
19             # }}}
20              
21             # {{{ w2n convert text to number
22              
23             sub w2n :Export {
24 55   100 55 1 3986803 my $input = shift // return;
25              
26 54         629 return $parser->numeral($input);
27 1     1   129 }
  1         11  
  1         9  
28              
29             # }}}
30             # {{{ hin_numerals create parser for hindi numerals
31              
32             sub hin_numerals {
33 1     1 1 5 return Parse::RecDescent->new(q{
34            
35              
36             numeral: crore
37             | lOkOhOd
38             | { }
39              
40             number: 'शून्य' { 0 }
41             | 'एक' { 1 }
42             | 'दो' { 2 }
43             | 'तीन' { 3 }
44             | 'चार' { 4 }
45             | 'पाँच' { 5 }
46             | 'छह' { 6 }
47             | 'सात' { 7 }
48             | 'आठ' { 8 }
49             | 'नौ' { 9 }
50             | 'दस' { 10 }
51             | 'ग्यारह' { 11 }
52             | 'बारह' { 12 }
53             | 'तेरह' { 13 }
54             | 'चौदह' { 14 }
55             | 'पंद्रह' { 15 }
56             | 'सोलह' { 16 }
57             | 'सत्रह' { 17 }
58             | 'अट्ठारह' { 18 }
59             | 'उन्नीस' { 19 }
60             | 'बीस' { 20 }
61             | 'इक्कीस' { 21 }
62             | 'बाईस' { 22 }
63             | 'तेईस' { 23 }
64             | 'चौबिस' { 24 }
65             | 'पच्चीस' { 25 }
66             | 'छब्बीस' { 26 }
67             | 'सत्ताईस' { 27 }
68             | 'अट्ठाईस' { 28 }
69             | 'उनतीस' { 29 }
70             | 'तीस' { 30 }
71             | 'इकतीस' { 31 }
72             | 'बत्तीस' { 32 }
73             | 'तैंतीस' { 33 }
74             | 'चौंतीस' { 34 }
75             | 'पैंतीस' { 35 }
76             | 'छत्तीस' { 36 }
77             | 'सैंतीस' { 37 }
78             | 'अड़तीस' { 38 }
79             | 'उनतालीस' { 39 }
80             | 'चालीस' { 40 }
81             | 'इकतालीस' { 41 }
82             | 'बयालीस' { 42 }
83             | 'तैंतालीस' { 43 }
84             | 'चौंतालीस' { 44 }
85             | 'पैंतालीस' { 45 }
86             | 'छयालीस' { 46 }
87             | 'सैंतालीस' { 47 }
88             | 'अड़तालीस' { 48 }
89             | 'उनचास' { 49 }
90             | 'पचासी' { 85 }
91             | 'पचास' { 50 }
92             | 'इक्यावन' { 51 }
93             | 'बावन' { 52 }
94             | 'तिरेपन' { 53 }
95             | 'चौवन' { 54 }
96             | 'पचपन' { 55 }
97             | 'छप्पन' { 56 }
98             | 'सत्तावन' { 57 }
99             | 'अट्ठावन' { 58 }
100             | 'उनसठ' { 59 }
101             | 'साठ' { 60 }
102             | 'इकसठ' { 61 }
103             | 'बासठ' { 62 }
104             | 'तिरेसठ' { 63 }
105             | 'चौंसठ' { 64 }
106             | 'पैंसठ' { 65 }
107             | 'छयासठ' { 66 }
108             | 'सरसठ' { 67 }
109             | 'अड़सठ' { 68 }
110             | 'उनहत्तर' { 69 }
111             | 'सत्तर' { 70 }
112             | 'इकहत्तर' { 71 }
113             | 'बहत्तर' { 72 }
114             | 'तिहत्तर' { 73 }
115             | 'चौहत्तर' { 74 }
116             | 'पचहत्तर' { 75 }
117             | 'छिहत्तर' { 76 }
118             | 'सतहत्तर' { 77 }
119             | 'अठहत्तर' { 78 }
120             | 'उन्यासी' { 79 }
121             | 'अस्सी' { 80 }
122             | 'इक्यासी' { 81 }
123             | 'बयासी' { 82 }
124             | 'तिरासी' { 83 }
125             | 'चौरासी' { 84 }
126             | 'छियासी' { 86 }
127             | 'सत्तासी' { 87 }
128             | 'अठासी' { 88 }
129             | 'नवासी' { 89 }
130             | 'नब्बे' { 90 }
131             | 'इक्यानवे' { 91 }
132             | 'बानवे' { 92 }
133             | 'तिरानवे' { 93 }
134             | 'चौरानवे' { 94 }
135             | 'पचानवे' { 95 }
136             | 'छियानवे' { 96 }
137             | 'सत्तानवे' { 97 }
138             | 'अट्ठानवे' { 98 }
139             | 'निन्यानवे' { 99 }
140              
141             hecto: number 'सौ' number { $item[1] * 100 + $item[3] }
142             | number 'सौ' { $item[1] * 100 }
143             | 'सौ' { 100 }
144              
145             hOd: hecto
146             | number
147              
148             kilo: hOd 'हज़ार' hOd { $item[1] * 1000 + $item[3] }
149             | hOd 'हज़ार' { $item[1] * 1000 }
150             | 'हज़ार' { 1000 }
151              
152             kOhOd: kilo
153             | hOd
154              
155             lakh: hOd 'लाख' kOhOd { $item[1] * 100_000 + $item[3] }
156             | hOd 'लाख' { $item[1] * 100_000 }
157             | 'लाख' { 100_000 }
158              
159             lOkOhOd: lakh
160             | kOhOd
161              
162             crore: hOd 'करोड़' lOkOhOd { $item[1] * 10_000_000 + $item[3] }
163             | hOd 'करोड़' { $item[1] * 10_000_000 }
164             | 'करोड़' { 10_000_000 }
165             });
166             }
167              
168             # }}}
169             # {{{ capabilities declare supported features
170              
171             sub capabilities {
172             return {
173 0     0 1   w2n => 1,
174             };
175             }
176              
177             # }}}
178              
179             1;
180              
181             __END__