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 +4 -4
- data/README.md +4 -1
- data/kabal.gemspec +1 -1
- data/lib/kabal/version.rb +1 -1
- data/lib/kabal.rb +20 -0
- data/test/lib/kabal_test.rb +25 -4
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87d659049e316b750ac3b8d89e42c3a95bfecc4d
|
4
|
+
data.tar.gz: 19aa78c47a2aa03e90871de4cf094654c568b142
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
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
|
data/test/lib/kabal_test.rb
CHANGED
@@ -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
|
-
|
56
|
-
|
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
|
-
|
61
|
-
|
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
|
+
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-
|
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: []
|