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 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