public
Description: Converts numbers, currency and other units to Polish, English, German
Homepage: http://trix.pl
Clone URL: git://github.com/tomaszmazur/verbal.git
Click here to lend your support to: verbal and make a donation at www.pledgie.com !
bug: 1 - jedna korona, but not 31 -> trzydziesci jedna korona
tomaszmazur (author)
Fri Jul 25 11:22:46 -0700 2008
commit  630647bdc05cadcc9be039b4881aa93df5fb59ab
tree    2e198fae5386abcd8120fb71dbb2a9e8efa6c989
parent  5e16e3c41e3b952fbe32dc1dbbaef8bd1b01afd6
...
 
 
 
 
 
 
 
 
 
 
1
2
3
...
1
2
3
4
5
6
7
8
9
10
11
12
13
0
@@ -1,3 +1,13 @@
0
+== INSTALL:
0
+
0
+script/plugin install git://github.com/tomaszmazur/verbal.git
0
+
0
+OR
0
+
0
+$ sudo gem sources -a http://gems.github.com
0
+$ sudo gem install tomaszmazur-verbal
0
+
0
+
0
 == USAGE:
0
 
0
 Verbal::Numbers.to_words(123_456_789)
...
8
9
10
11
 
 
 
 
 
 
 
12
13
 
14
15
 
16
17
18
 
 
 
 
 
19
20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
22
23
...
8
9
10
 
11
12
13
14
15
16
17
18
 
19
20
21
22
23
 
 
24
25
26
27
28
29
 
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
0
@@ -8,16 +8,43 @@ module Verbal
0
 
0
     CURRENCIES = {
0
       'PLN' => [['złoty','złote','złotych'], ['grosz','grosze','groszy'], [0, 0]],
0
- 'USD' => [['dolar','dolary','dolarów'], ['cent','centy','centów'], [0, 0]],
0
+ 'THB' => [['bat','baty','batów'], ['satang','satangi','satangów'], [0, 0]],
0
+ 'USD' => [['dolar amerykański','dolary amerykańskie','dolarów amerykańskich'], ['cent','centy','centów'], [0, 0]],
0
+ 'AUD' => [['dolar australijski','dolary australijskie','dolarów australijskich'], ['cent','centy','centów'], [0, 0]],
0
+ 'HKD' => [['dolar Hongkongu','dolary Hongkongu','dolarów Hongkongu'], ['cent','centy','centów'], [0, 0]],
0
+ 'CAD' => [['dolar kanadyjski','dolary kanadyjskie','dolarów kanadyjskich'], ['cent','centy','centów'], [0, 0]],
0
+ 'NZD' => [['dolar nowozelandzki','dolary nowozelandzkie','dolarów nowozelandzkich'], ['cent','centy','centów'], [0, 0]],
0
+ 'SGD' => [['dolar singapurski','dolary singapurskie','dolarów singapurskich'], ['cent','centy','centów'], [0, 0]],
0
       'EUR' => [['euro','euro','euro'], ['eurocent', 'eurocenty', 'eurocentów'], [0, 0]],
0
- 'CZK' => [['korona czeska','korony czeskie','koron czeskich'], ['halerz','halerze','halerzy'], [1, 0]],
0
+ 'HUF' => [['forint','forinty','forintów'], ['filler','fillery','fillerów'], [0, 0]],
0
       'CHF' => [['frank szwajcarski','franki szwajcarskie','franków szwajcarskich'], ['rapp','rappy','rappów'], [0, 0]],
0
       'GBP' => [['funt szterling','funty szterlingi','funtów szterlingów'], ['pens','pensy','pensów'], [0, 0]],
0
+ 'UAH' => [['hrywna','hrywny','hrywien'], ['kopiejka','kopiejki','kopiejek'], [1, 1]],
0
       'JPY' => [['jen','jeny','jenów'], ['sen','seny','senów'], [0, 0]],
0
- 'RUB' => [['rubel','ruble','rubli'], ['kopiejka','kopiejki','kopiejek'], [0, 1]],
0
- 'SEK' => [['korona szwedzka','korony szwedzkie','koron szwedzkich'], ['oere','oere','oere'], [1, 0]],
0
+ 'CZK' => [['korona czeska','korony czeskie','koron czeskich'], ['halerz','halerze','halerzy'], [1, 0]],
0
+ 'DKK' => [['korona duńska','korony duńskie','koron duńskich'], ['ore','ore','ore'], [1, 0]],
0
+ 'EEK' => [['korona estońska', 'korony estońskie','koron estońskich'], ['senti','senti','senti'], [1, 0]],
0
+ 'ISK' => [['korona islandzka','korony islandzkie','koron islandzkie'], ['aurar','aurar','aurar'], [1, 0]],
0
+ 'NOK' => [['korona norweska','korony norweskie','koron norweskich'], ['oere','oere','oere'], [1, 0]],
0
       'SKK' => [['korona słowacka','korony słowackie','koron słowackich'], ['halerz','halerze','halerzy'], [1, 0]],
0
- }
0
+ 'SEK' => [['korona szwedzka','korony szwedzkie','koron szwedzkich'], ['oere','oere','oere'], [1, 0]],
0
+ 'HRK' => [['kuna','kuny','kun'], ['lipa','lipy','lip'], [1, 1]],
0
+ 'RON' => [['lej rumuński','leje rumuńskie','lejów rumuńskich'], ['bani','bani','bani'], [0, 0]],
0
+ 'BGN' => [['lew bułgarski','lewy bułgarskie','lewów bułgarskich'], ['stotinka','stotinki','stotinek'], [0, 1]],
0
+ 'TRY' => [['lira turecka','liry tureckie','lir tureckich'], ['gurusz','gurusze','guruszy'], [1, 0]],
0
+ 'LTL' => [['lit litewski','lity litewskie','litów litewskich'], ['sen','seny','senów'], [0, 0]],
0
+ 'LVL' => [['łat łotewski','łaty łotewskie','łatów łotewskich'], ['sentim','sentimy','sentimów'], [0, 0]],
0
+ 'PHP' => [['peso filipińskie','peso filipińskie','peso filipińskich'], ['centavos','centavos','centavos'], [0, 0]],
0
+ 'MXN' => [['peso meksykańskie','peso meksykańskie','peso meksykańskich'], ['centavos','centavos','centavos'], [0, 0]],
0
+ 'ZAR' => [['rand','randy','randów'], ['cent','centy','centów'], [0, 0]],
0
+ 'BRL' => [['real brazylijski','reale brazylijskie','realów brazylijskich'], ['centavos','centavos','centavos'], [0, 0]],
0
+ 'MYR' => [['ringgit malezyjski','ringgity malezyjskie','ringgitów malezyjskich'], ['sen','seny','senów'], [0, 0]],
0
+ 'RUB' => [['rubel','ruble','rubli'], ['kopiejka','kopiejki','kopiejek'], [0, 1]],
0
+ 'IDR' => [['rupia','rupie','rupii'], ['sen','seny','senów'], [1, 0]],
0
+ 'KRW' => [['won','wony','wonów'], ['dzon','dzony','dzonów'], [0, 0]],
0
+ 'CNY' => [['yuan renminbi','yuany renminbi','yuanów renminbi'], ['fen','feny','fenów'], [0, 0]],
0
+ }
0
+
0
 
0
     def to_words(value, symbol = 'PLN')
0
       raise 'must be an integer' unless value.is_a?(Integer)
...
16
17
18
19
 
20
21
22
...
75
76
77
78
 
79
80
81
...
92
93
94
95
 
96
97
98
99
100
 
101
102
103
104
105
106
107
 
 
 
 
108
109
110
111
112
113
114
 
 
115
116
117
...
16
17
18
 
19
20
21
22
...
75
76
77
 
78
79
80
81
...
92
93
94
 
95
96
97
98
99
 
100
101
102
103
 
 
 
 
104
105
106
107
108
 
 
 
 
 
 
109
110
111
112
113
0
@@ -16,7 +16,7 @@ module Verbal
0
 
0
     NUMBERS = {
0
       0 => 'zero',
0
- 1 => 'jeden',
0
+ 1 => ['jeden', 'jedna'],
0
       2 => ['dwa', 'dwie'],
0
       3 => 'trzy',
0
       4 => 'cztery',
0
@@ -75,7 +75,7 @@ module Verbal
0
       ((value.to_s.length - 1) / 3) * 3
0
     end
0
 
0
- def process_number(value, gender)
0
+ def process_number(value, gender = 0)
0
       value < 100 ? process_tens(value, gender) : process_hundreds(value, gender)
0
     end
0
 
0
@@ -92,26 +92,22 @@ module Verbal
0
       return readable_slices.sort.reverse.delete_if {|k, v| v.zero?}
0
     end
0
 
0
- def process_hundreds(value, gender)
0
+ def process_hundreds(value, gender = 0)
0
     raise 'value is in incorrect range' unless (100..999).include?(value)
0
       if (value % 100) == 0
0
         return NUMBERS[value]
0
       else
0
- return NUMBERS[(value / 100) * 100] + ' ' + process_tens(value % 100, gender)
0
+ return "#{NUMBERS[(value / 100) * 100]} #{process_tens(value % 100, gender)}"
0
       end
0
     end
0
 
0
- def process_tens(value, gender)
0
- raise 'value is in incorrect range' unless (1..99).include?(value)
0
- return NUMBERS[value][gender] if value == 2
0
- return NUMBERS[value] if value < 9
0
+ def process_tens(value, gender = 0)
0
+ return NUMBERS[value][gender] if (1..2).include?(value)
0
+ return NUMBERS[value] if value < 10
0
+ return NUMBERS[value] if (11..19).include?(value)
0
       return NUMBERS[(value / 10) * 10] if (value % 10) == 0
0
- if (11..19).include?(value)
0
- return NUMBERS[value]
0
- else
0
- return NUMBERS[(value / 10) * 10] + ' ' + NUMBERS[value % 10]
0
- end
0
- end
0
+ return "#{NUMBERS[(value / 10) * 10]} #{((value % 10) == 2) ? NUMBERS[2][gender] : NUMBERS[value % 10][0]}"
0
+ end
0
 
0
     module_function :to_words, :variation, :exponent, :process_number, :process_thousands, :process_hundreds, :process_tens
0
 

Comments