parsi-digits 0.1 → 0.2
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.
- data/lib/parsi_digits.rb +52 -2
- data/lib/version.rb +1 -1
- data/test/parsi_digits_test.rb +9 -1
- metadata +17 -7
data/lib/parsi_digits.rb
CHANGED
@@ -11,6 +11,40 @@ module ParsiDigits
|
|
11
11
|
def to_western digit
|
12
12
|
PARSI_DIGITS.index digit if digit =~ /[۰-۹]/
|
13
13
|
end
|
14
|
+
|
15
|
+
def locale_separator options={}
|
16
|
+
locale = options[:locale]
|
17
|
+
default = options[:default]
|
18
|
+
default ||= (locale == :fa ? '/' : '.')
|
19
|
+
begin
|
20
|
+
I18n.t(:'number.format.separator', default: default, locale: locale)
|
21
|
+
rescue
|
22
|
+
default
|
23
|
+
end
|
24
|
+
end
|
25
|
+
def fa_separator
|
26
|
+
locale_separator locale: :fa
|
27
|
+
end
|
28
|
+
def en_separator
|
29
|
+
locale_separator locale: :en
|
30
|
+
end
|
31
|
+
|
32
|
+
def locale_delimiter options={}
|
33
|
+
locale = options[:locale]
|
34
|
+
default = options[:default]
|
35
|
+
default ||= (locale == :fa ? '٫' : ',')
|
36
|
+
begin
|
37
|
+
I18n.t(:'number.format.delimiter', default: default, locale: locale)
|
38
|
+
rescue
|
39
|
+
default
|
40
|
+
end
|
41
|
+
end
|
42
|
+
def fa_delimiter
|
43
|
+
locale_delimiter locale: :fa
|
44
|
+
end
|
45
|
+
def en_delimiter
|
46
|
+
locale_delimiter locale: :en
|
47
|
+
end
|
14
48
|
end
|
15
49
|
end
|
16
50
|
|
@@ -34,6 +68,20 @@ class String
|
|
34
68
|
def has_parsi_digits?
|
35
69
|
self =~ /[۰-۹]/
|
36
70
|
end
|
71
|
+
|
72
|
+
def remove_delimiters options={locale: :fa}
|
73
|
+
locale = options[:locale]
|
74
|
+
delimiter = options[:delimiter]
|
75
|
+
delimiter ||= ParsiDigits.locale_delimiter locale: locale
|
76
|
+
gsub delimiter, ''
|
77
|
+
end
|
78
|
+
|
79
|
+
def remove_delimiters!
|
80
|
+
locale = options[:locale]
|
81
|
+
delimiter = options[:delimiter]
|
82
|
+
delimiter ||= ParsiDigits.locale_delimiter locale: locale
|
83
|
+
gsub! delimiter, ''
|
84
|
+
end
|
37
85
|
|
38
86
|
alias_method :western_to_i, :to_i
|
39
87
|
def to_i base=10
|
@@ -47,7 +95,8 @@ class String
|
|
47
95
|
alias_method :western_to_f, :to_f
|
48
96
|
def to_f
|
49
97
|
if has_parsi_digits?
|
50
|
-
|
98
|
+
separator = ParsiDigits.fa_separator
|
99
|
+
with_western_digits.sub(separator, '.').western_to_f
|
51
100
|
else
|
52
101
|
western_to_f
|
53
102
|
end
|
@@ -62,6 +111,7 @@ end
|
|
62
111
|
|
63
112
|
class Float
|
64
113
|
def with_parsi_digits
|
65
|
-
|
114
|
+
separator = ParsiDigits.fa_separator
|
115
|
+
to_s.with_parsi_digits.sub '.', separator
|
66
116
|
end
|
67
117
|
end
|
data/lib/version.rb
CHANGED
data/test/parsi_digits_test.rb
CHANGED
@@ -15,11 +15,19 @@ class ParsiDigitsTest < Test::Unit::TestCase
|
|
15
15
|
assert_equal 9876543210, "۹۸۷۶۵۴۳۲۱۰".to_i
|
16
16
|
assert_equal 9876543210, "9876543210".to_i
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def test_parsi_string_to_f
|
20
20
|
assert_equal 0.987654321, "۰/۹۸۷۶۵۴۳۲۱".to_f
|
21
21
|
assert_equal 0.987654321, "0.987654321".to_f
|
22
22
|
end
|
23
|
+
|
24
|
+
def test_string_remove_delimiters
|
25
|
+
assert_equal "۹۸۷۶۵۴۳۲۱۰", "۹٫۸۷۶٫۵۴۳٫۲۱۰".remove_delimiters
|
26
|
+
assert_equal "۹۸۷۶۵۴۳۲۱۰", "۹٫۸۷۶٫۵۴۳٫۲۱۰".remove_delimiters(locale: :fa)
|
27
|
+
assert_equal "9876543210", "9,876,543,210".remove_delimiters(locale: :en)
|
28
|
+
assert_equal "9876543210", "9_876_543_210".remove_delimiters(delimiter: '_')
|
29
|
+
assert_equal "9876543210", "9,876,543,210".remove_delimiters(delimiter: ',')
|
30
|
+
end
|
23
31
|
|
24
32
|
def test_integer_with_parsi_digits
|
25
33
|
assert_equal "۹۸۷۶۵۴۳۲۱۰", 9876543210.with_parsi_digits
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parsi-digits
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.2'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rake
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,7 +37,12 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
description: Some utils to support parsi digits including convertion between parsi
|
37
47
|
and western digits and convertion from String to Float or Fixnum
|
38
48
|
email: hsn.zamani@gmail.com
|
@@ -69,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
79
|
version: '0'
|
70
80
|
requirements: []
|
71
81
|
rubyforge_project:
|
72
|
-
rubygems_version: 1.8.
|
82
|
+
rubygems_version: 1.8.24
|
73
83
|
signing_key:
|
74
84
|
specification_version: 3
|
75
85
|
summary: Some utils to support parsi digits
|