kabal 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|