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 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