kabal 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -12
- data/lib/kabal/languages/deutsch.rb +4 -1
- data/lib/kabal/languages/deutsch/fractional_numbers.rb +28 -0
- data/lib/kabal/version.rb +1 -1
- data/test/lib/kabal/languages/deutsch_test.rb +20 -0
- data/yaml/languages/de.yml +1 -0
- data/yaml/support.yml +2 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc725820d84c44702241e372e5ed2b85cb38bc3a
|
4
|
+
data.tar.gz: ec3329559be4a8c3a65b938014faa401c82c9496
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6860d8a77351e36d445ab966848126e9c4081403e4ae6919f7382c2e26c2bb16649de055c45b912fdf0d7e87be5abdae597ee18fe58af79ccbc9c4968902338f
|
7
|
+
data.tar.gz: 53eb4b57612e2e12841072f7bc25e58fd7bf6fff66c4a93173e32f6ba800c7b80473f1f771eb5609a12e047fca9250450077a712f48411e1e55d2e28c5e49741
|
data/README.md
CHANGED
@@ -49,12 +49,13 @@ Supported Languages:
|
|
49
49
|
* Natural Numbers { max 10 ** 63 }
|
50
50
|
* Fractional Numbers
|
51
51
|
* Negative Numbers
|
52
|
-
|
53
|
-
*
|
52
|
+
* Deutsch
|
53
|
+
* Natural Number { max 10 ** 24 }
|
54
|
+
* Negative Numbers
|
54
55
|
|
55
56
|
Some interfaces:
|
56
57
|
|
57
|
-
$> Kabal.supported_languages #=> ["Russian", "English"]
|
58
|
+
$> Kabal.supported_languages #=> ["Russian", "English", "Deutsch"]
|
58
59
|
$> Kabal.to_text_in_language(1, "English") #=> "one"
|
59
60
|
$> Kabal.to_text_in_language_by_index(1, 0) #=> "один"
|
60
61
|
$> Kabal.current_language_supports_natural? #=> true
|
@@ -77,10 +78,10 @@ Some interfaces:
|
|
77
78
|
To add Elfin language you should:
|
78
79
|
|
79
80
|
1. Create `lib/kabal/languages/elfin.rb`. You'll describe rules of this language to drawing numbers there.
|
80
|
-
|
81
|
+
|
81
82
|
```ruby
|
82
83
|
require 'kabal/languages/language'
|
83
|
-
|
84
|
+
|
84
85
|
class Kabal::Elfin < Kabal::Language
|
85
86
|
def convert(number)
|
86
87
|
#anything you want
|
@@ -95,14 +96,14 @@ To add Elfin language you should:
|
|
95
96
|
minus: #Minus on Elfin Language#
|
96
97
|
```
|
97
98
|
4. Add `Elfin: "el"` to `yaml/languages.yml`.
|
98
|
-
5. Add to `yaml/support.yml`
|
99
|
+
5. Add to `yaml/support.yml`
|
99
100
|
|
100
101
|
```yaml
|
101
|
-
el:
|
102
|
-
natural:
|
102
|
+
el:
|
103
|
+
natural:
|
103
104
|
min: {min_of_your_realization}
|
104
|
-
max: {max_of_your_realization}
|
105
|
-
fractional:
|
105
|
+
max: {max_of_your_realization}
|
106
|
+
fractional:
|
106
107
|
symbols: {count_of_symbols_after_dot_that_you_realized}
|
107
108
|
```
|
108
109
|
6. Add `require "kabal/languages/elfin"` to `lib/kabal/supported_languages.rb`.
|
@@ -110,7 +111,7 @@ To add Elfin language you should:
|
|
110
111
|
## Testing
|
111
112
|
|
112
113
|
Kabal has the BigTest. This test checks the correctness of the operation with all the numbers (0 to 10,000) in all supported languages.
|
113
|
-
Be careful: BigTest now working around
|
114
|
+
Be careful: BigTest now working around 8 minutes.
|
114
115
|
Run BigTest
|
115
116
|
|
116
117
|
$> tconsole bigtest
|
@@ -118,5 +119,5 @@ Run BigTest
|
|
118
119
|
Relax!
|
119
120
|
|
120
121
|
$> tconsole all
|
121
|
-
|
122
|
+
|
122
123
|
runs all tests without Bigtest.
|
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'kabal/languages/language'
|
2
2
|
require 'kabal/languages/deutsch/natural_numbers'
|
3
3
|
require 'kabal/languages/deutsch/declinations'
|
4
|
+
require 'kabal/languages/deutsch/fractional_numbers'
|
4
5
|
|
5
6
|
class Kabal::Deutsch < Kabal::Language
|
6
7
|
include Kabal::DeutschRules::NaturalNumbers
|
8
|
+
include Kabal::DeutschRules::FractionalNumbers
|
7
9
|
|
8
10
|
def convert(number)
|
9
11
|
if need_minus? number
|
@@ -14,6 +16,7 @@ class Kabal::Deutsch < Kabal::Language
|
|
14
16
|
end
|
15
17
|
|
16
18
|
def number_words(number)
|
17
|
-
natural_number_name number.round if natural? number
|
19
|
+
return natural_number_name number.round if natural? number
|
20
|
+
fractional_number_name number if fractional? number
|
18
21
|
end
|
19
22
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Kabal
|
2
|
+
module DeutschRules
|
3
|
+
module FractionalNumbers
|
4
|
+
def fractional_number_name(number)
|
5
|
+
whole_part_name(number) + " " + dot + " " + fractional_part_name(number)
|
6
|
+
end
|
7
|
+
|
8
|
+
def whole_part_name(number)
|
9
|
+
count = number.to_s.split('.')[0].to_i
|
10
|
+
natural_number_name(count)
|
11
|
+
end
|
12
|
+
|
13
|
+
def fractional_part_name(number)
|
14
|
+
name = ""
|
15
|
+
count_string = number.to_s.split('.')[1]
|
16
|
+
count = count_string.to_i
|
17
|
+
if count_string.size != count.to_s.size
|
18
|
+
(count_string.size - count.to_s.size).times do
|
19
|
+
name += names["single"][0] + " "
|
20
|
+
end
|
21
|
+
name + natural_number_name(count)
|
22
|
+
else
|
23
|
+
natural_number_name(count)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/kabal/version.rb
CHANGED
@@ -61,4 +61,24 @@ class DeutschTest < TestCase
|
|
61
61
|
def test_minus_one_hundred_fifty
|
62
62
|
assert_equal "minus einhundertfünfzig", @deu.convert(-150)
|
63
63
|
end
|
64
|
+
def test_1_point_5
|
65
|
+
assert_equal "eins Komma fünf", @deu.convert(1.5)
|
66
|
+
assert_equal "minus eins Komma fünf", @deu.convert(-1.5)
|
67
|
+
end
|
68
|
+
def test_125_point_125
|
69
|
+
assert_equal "einhundertfünfundzwanzig Komma einhundertfünfundzwanzig", @deu.convert(125.125)
|
70
|
+
assert_equal "minus einhundertfünfundzwanzig Komma einhundertfünfundzwanzig", @deu.convert(-125.125)
|
71
|
+
end
|
72
|
+
def test_zero_point_one
|
73
|
+
assert_equal "null Komma eins", @deu.convert(0.1)
|
74
|
+
assert_equal "minus null Komma eins", @deu.convert(-0.1)
|
75
|
+
end
|
76
|
+
def test_one_point_zero_five
|
77
|
+
assert_equal "eins Komma null fünf", @deu.convert(1.05)
|
78
|
+
assert_equal "minus eins Komma null fünf", @deu.convert(-1.05)
|
79
|
+
end
|
80
|
+
def test_one_point_zero_zero_zero_zero_zero_zero_zero_five
|
81
|
+
assert_equal "eins Komma null null null null null null null fünf", @deu.convert(1.00000005)
|
82
|
+
assert_equal "minus eins Komma null null null null null null null fünf", @deu.convert(-1.00000005)
|
83
|
+
end
|
64
84
|
end
|
data/yaml/languages/de.yml
CHANGED
data/yaml/support.yml
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kabal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Kalashnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -64,6 +64,7 @@ files:
|
|
64
64
|
- lib/kabal/errors/number_out_range_error.rb
|
65
65
|
- lib/kabal/languages/deutsch.rb
|
66
66
|
- lib/kabal/languages/deutsch/declinations.rb
|
67
|
+
- lib/kabal/languages/deutsch/fractional_numbers.rb
|
67
68
|
- lib/kabal/languages/deutsch/natural_numbers.rb
|
68
69
|
- lib/kabal/languages/english.rb
|
69
70
|
- lib/kabal/languages/english/fractional_numbers.rb
|