kabal 0.3.4 → 0.3.5

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: 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: []