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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d28a23b9df3d9bab99f1e29aa39421d97308bb59
4
- data.tar.gz: 09de7b299034fc55883df75aaae3925c30d3be39
3
+ metadata.gz: fc725820d84c44702241e372e5ed2b85cb38bc3a
4
+ data.tar.gz: ec3329559be4a8c3a65b938014faa401c82c9496
5
5
  SHA512:
6
- metadata.gz: 95600c2862d68496e9e31f6bfd8f95dee95548797aa14e4fd60fc402e26b0b2883d6309415a506858ece13a1d4eb4a2c41e82ca9ed94a1e58ed1283ef4affd82
7
- data.tar.gz: 3a7e32acd2221c4fe80a82274f5d2af085adb3472e402204c9d4ef2667b8013fe68daecf70bdbc889e377173df5406cf68a20fb12b6494825d2067b3fb95d2f6
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
- *More languages will be added later.*
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 6 minutes.
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
@@ -1,3 +1,3 @@
1
1
  module Kabal
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
@@ -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
@@ -1,4 +1,5 @@
1
1
  de:
2
+ dot: Komma
2
3
  and: "und"
3
4
  minus: "minus"
4
5
  single:
@@ -15,3 +15,5 @@ support:
15
15
  natural:
16
16
  min: "-(10 ** 24) + 1"
17
17
  max: "(10 ** 24) - 1"
18
+ fractional:
19
+ symbols: 16
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.2
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-29 00:00:00.000000000 Z
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