kabal 0.3.4 → 0.3.5

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: 08e4ee26ce056a29fc5170e2dae9aafb09646e48
4
- data.tar.gz: ebe8eb272d894fcb5978f810aa10147afe64a59a
3
+ metadata.gz: 87d659049e316b750ac3b8d89e42c3a95bfecc4d
4
+ data.tar.gz: 19aa78c47a2aa03e90871de4cf094654c568b142
5
5
  SHA512:
6
- metadata.gz: 39857db4c41b30a3fd95bc2acbe343ec1f3dc439f1f4ca1ee01562ab999d94e69e9bd7dddc68a9e031051711c9ebbc1412cb4765fb15db48f7940bf48c8ce101
7
- data.tar.gz: 8e8b0398be6979358f4192fcd47e968dba963b5325e06bb0a87b4800515c7451358e6c5d3e4476a66ba8d2a3119a7a5030d4ab3a5e0e4e3dd227e2a8a42b048c
6
+ metadata.gz: d326228e18f5f2a2ae8cbb291cd3880771c7498cd3360f9ebc7c0503dc774f207fef91731cc0ff498c8cf21dea5a7e45e006122a90554df9addf8bde001f7937
7
+ data.tar.gz: 8594a4ef587c65f98a1fd19259dbc0ef672c1309a38bdc2126c937c84137b729e4908550b54a0141e279799bd7972514dfdb385c93abf2a656482cf37cde528b
data/README.md CHANGED
@@ -53,11 +53,14 @@ Supported Languages:
53
53
  * Natural Number { max 10 ** 24 }
54
54
  * Negative Numbers
55
55
 
56
- Some interfaces:
56
+ Interfaces:
57
57
 
58
58
  $> Kabal.supported_languages #=> ["Russian", "English", "Deutsch"]
59
+ $> Kabal.to_text "1" #=> "один"
59
60
  $> Kabal.to_text_in_language(1, "English") #=> "one"
61
+ $> Kabal.to_text_in_language("1", "English") #=> "one"
60
62
  $> Kabal.to_text_in_language_by_index(1, 0) #=> "один"
63
+ $> Kabal.to_text_in_language_by_index("1", 0) #=> "один"
61
64
  $> Kabal.current_language_supports_natural? #=> true
62
65
  $> Kabal.current_language_supports_fractional? #=> true
63
66
  $> Kabal.language_supports_negative? #=> true
data/kabal.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Pavel Kalashnikov"]
10
10
  spec.email = ["kalashnikovisme@gmail.com"]
11
11
  spec.summary = %q{Number To Text Helper}
12
- spec.description = %q{Kabal allows you to translate numbers into text.}
12
+ spec.description = %q{Kabal allows you to translate numbers into text on languages: English, Russian, Deutsch}
13
13
  spec.homepage = "https://github.com/kalashnikovisme/kabal"
14
14
  spec.license = "MIT"
15
15
  spec.required_ruby_version = '>= 2.0.0'
data/lib/kabal/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Kabal
2
- VERSION = "0.3.4"
2
+ VERSION = "0.3.5"
3
3
  end
data/lib/kabal.rb CHANGED
@@ -23,6 +23,7 @@ module Kabal
23
23
  end
24
24
 
25
25
  def to_text_in_language(number, language_at_once)
26
+ number = string_convert number
26
27
  languages = Kabal::Config::YamlLoader.yaml_object "languages"
27
28
  if languages[language_at_once]
28
29
  if number > maximum_for(language_at_once) or number < minimum_for(language_at_once)
@@ -37,6 +38,7 @@ module Kabal
37
38
  end
38
39
 
39
40
  def to_text_in_language_by_index(number, language_at_once_index)
41
+ number = string_convert number
40
42
  languages = Kabal::Config::YamlLoader.yaml_object("languages").to_a
41
43
  if languages[language_at_once_index]
42
44
  obj = Object.const_get("Kabal::" + languages[language_at_once_index].first).new
@@ -85,4 +87,22 @@ module Kabal
85
87
  obj = Object.const_get("Kabal::" + language).new
86
88
  obj.min_value
87
89
  end
90
+
91
+ private
92
+
93
+ def string_convert(number)
94
+ if number.is_a? String
95
+ if string_is_float? number
96
+ Kernel::Float(number)
97
+ else
98
+ number.to_i
99
+ end
100
+ else
101
+ number
102
+ end
103
+ end
104
+
105
+ def string_is_float?(number)
106
+ number.include? "."
107
+ end
88
108
  end
@@ -10,22 +10,27 @@ class KabalTest < TestCase
10
10
 
11
11
  def test_to_text
12
12
  assert_equal "сто двадцать пять миллиардов сто двадцать пять миллионов сто двадцать пять тысяч сто двадцать пять", Kabal.to_text(125125125125)
13
+ assert_equal "сто двадцать пять миллиардов сто двадцать пять миллионов сто двадцать пять тысяч сто двадцать пять", Kabal.to_text("125125125125")
13
14
  end
14
15
 
15
16
  def test_to_text_in_language
16
17
  assert_equal "сто двадцать пять миллиардов сто двадцать пять миллионов сто двадцать пять тысяч сто двадцать пять", Kabal.to_text_in_language(125125125125, "Russian")
18
+ assert_equal "сто двадцать пять миллиардов сто двадцать пять миллионов сто двадцать пять тысяч сто двадцать пять", Kabal.to_text_in_language("125125125125", "Russian")
17
19
  end
18
20
 
19
21
  def test_to_text_in_language_by_index
20
22
  assert_equal "сто двадцать пять миллиардов сто двадцать пять миллионов сто двадцать пять тысяч сто двадцать пять", Kabal.to_text_in_language_by_index(125125125125, 0)
23
+ assert_equal "сто двадцать пять миллиардов сто двадцать пять миллионов сто двадцать пять тысяч сто двадцать пять", Kabal.to_text_in_language_by_index("125125125125", 0)
21
24
  end
22
25
 
23
26
  def test_to_text_in_language_by_index_with_unsupport_language
24
27
  assert_equal NoLanguageSupportError.message, Kabal.to_text_in_language_by_index(125125125125, 3)
28
+ assert_equal NoLanguageSupportError.message, Kabal.to_text_in_language_by_index("125125125125", 3)
25
29
  end
26
30
 
27
31
  def test_to_text_in_language_with_unsupported_language
28
32
  assert_equal NoLanguageSupportError.message, Kabal.to_text_in_language(125125125125, "Elfin")
33
+ assert_equal NoLanguageSupportError.message, Kabal.to_text_in_language("125125125125", "Elfin")
29
34
  end
30
35
 
31
36
  def test_language_init_with_unsupported_language
@@ -52,13 +57,22 @@ class KabalTest < TestCase
52
57
  end
53
58
 
54
59
  def test_maximum_for_language
55
- assert Kabal.maximum_for("Russian"), 10 ** 102
56
- assert Kabal.maximum_for("English"), (10 ** 66) - 1
60
+ assert_equal Kabal.maximum_for("Russian"), 10 ** 102
61
+ assert_equal Kabal.maximum_for("English"), (10 ** 66) - 1
62
+ assert_equal Kabal.maximum_for("Deutsch"), (10 ** 24) - 1
57
63
  end
58
64
 
59
65
  def test_minimum_for_language
60
- assert Kabal.minimum_for("Russian"), -(10 ** 102)
61
- assert Kabal.minimum_for("English"), 0
66
+ assert_equal Kabal.minimum_for("Russian"), -(10 ** 102)
67
+ assert_equal Kabal.minimum_for("English"), -(10 ** 66) + 1
68
+ assert_equal Kabal.minimum_for("Deutsch"), -(10 ** 24) + 1
69
+ end
70
+
71
+ def test_minimum_and_maximum_convert_for_language
72
+ Kabal.supported_languages.each do |language|
73
+ Kabal.to_text_in_language Kabal.maximum_for(language), language
74
+ Kabal.to_text_in_language Kabal.minimum_for(language), language
75
+ end
62
76
  end
63
77
 
64
78
  def test_language_supports_negative
@@ -72,4 +86,11 @@ class KabalTest < TestCase
72
86
  def test_big_number
73
87
  assert_equal NumberOutRangeError.message, Kabal.to_text_in_language(10000000000000000000000000000000000000, "Deutsch")
74
88
  end
89
+
90
+ def test_bad_number_test
91
+ assert_equal Kabal.to_text("110000000000000001011"), "сто десять квинтиллионов одна тысяча одиннадцать"
92
+ assert_equal Kabal.to_text("11000000000000011"), "одиннадцать квадраллионов одиннадцать"
93
+ assert_equal Kabal.to_text("112223334445556661011"), "сто двенадцать квинтиллиона двести двадцать три квадраллиона триста тридцать четыре триллиона четыреста сорок пять миллиардов пятьсот пятьдесят шесть миллионов шестьсот шестьдесят одна тысяча одиннадцать"
94
+ assert_equal Kabal.to_text("909090909.1234"), "девятьсот девять миллионов девяносто тысяч девятьсот девять целых девятьсот девять миллионов девяносто тысяч девятьсот девять одна тысяча двести тридцать четыре десятитысячных"
95
+ end
75
96
  end
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
4
+ version: 0.3.5
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-30 00:00:00.000000000 Z
11
+ date: 2014-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,7 +38,8 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- description: Kabal allows you to translate numbers into text.
41
+ description: 'Kabal allows you to translate numbers into text on languages: English,
42
+ Russian, Deutsch'
42
43
  email:
43
44
  - kalashnikovisme@gmail.com
44
45
  executables: []