parsi-digits 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
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
- with_western_digits.sub("/",".").western_to_f
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
- to_s.with_parsi_digits.sub '.', '/'
114
+ separator = ParsiDigits.fa_separator
115
+ to_s.with_parsi_digits.sub '.', separator
66
116
  end
67
117
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ParsiDigits
2
- VERSION = "0.1"
2
+ VERSION = "0.2"
3
3
  end
@@ -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.1'
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-01-26 00:00:00.000000000 Z
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: &19273340 !ruby/object:Gem::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: *19273340
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: &19272920 !ruby/object:Gem::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: *19272920
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.10
82
+ rubygems_version: 1.8.24
73
83
  signing_key:
74
84
  specification_version: 3
75
85
  summary: Some utils to support parsi digits