d12n 0.0.5 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b325c6c4d24775e4056d7102380928c90291fe2
4
- data.tar.gz: eb007a871dd91240dfe25195349ee8060b84533d
3
+ metadata.gz: c5df34197d3bfffd42c3b425ce8f2fa28cbbaf9a
4
+ data.tar.gz: 7d97e78a228379a178893e457466506802fd17fb
5
5
  SHA512:
6
- metadata.gz: bb13167ab9842d3ec4a0e22c3577bb693c537693eeebc5e2f6e1d0e55c381dddc9854d9ce38a71c6c039c46e0f685f104a7018b7705a5e27eb54d75833df7162
7
- data.tar.gz: 498b429e2fadeb20583592d807dd4f969344e127a9098de27598c832ab345665894f965bfc4f18b576ae5d929f619321f8cd56483d27e0750c853034a1f3b657
6
+ metadata.gz: db30f3bce1318b51a050acc1c1bc16b85902d5d48e416730f46ec68e3719259efb710547423a0284336b496066ff1906b9d8e7076dc37bb5b2ff13672b5a925b
7
+ data.tar.gz: 4e20e364e6228d631c081d44a6296b235fd2083716fc2ae3af2e0f307cba7ec59aa3704bfdecd3fa24564bb299c5c7a8b8a860f2d8e5afa4638218e2fcebfef2
data/README.md CHANGED
@@ -39,8 +39,16 @@ d.amount.to_f # 3456.78, did not change
39
39
  ## Configuration
40
40
 
41
41
  ```ruby
42
- D12n.config.strategy = D12n::Strategy::DecimalPoint # the default, no need to set it
43
- D12n.config.strategy = D12n::Strategy::DecimalComma # Use this for example in DE or NL locales
42
+ # the default, no need to set it
43
+ # It will use the settings from your I18n locale (number.format) to parse and generate the formatted number
44
+ # It is heavily recommended to use this
45
+ D12n.config.strategy = D12n::Strategy::Default
46
+
47
+ # Hard coded strategy using decimal point
48
+ D12n.config.strategy = D12n::Strategy::DecimalPoint
49
+
50
+ # Hard coded strategy using decimal comma
51
+ D12n.config.strategy = D12n::Strategy::DecimalComma
44
52
  ```
45
53
 
46
54
  ### Custom method prefix
@@ -8,11 +8,12 @@ module D12n
8
8
  module Strategy
9
9
  autoload :DecimalPoint, 'd12n/strategy/decimal_point'
10
10
  autoload :DecimalComma, 'd12n/strategy/decimal_comma'
11
+ autoload :Default, 'd12n/strategy/default'
11
12
  end
12
13
 
13
14
  autoload :ModelSupport, 'd12n/model_support'
14
15
 
15
16
  def self.strategy
16
- config.strategy || Strategy::DecimalPoint
17
+ config.strategy || Strategy::Default
17
18
  end
18
19
  end
@@ -1,17 +1,17 @@
1
- require 'bigdecimal'
2
-
3
1
  module D12n
4
2
  module Strategy
5
3
  module DecimalComma
4
+ include Default
6
5
  extend self
7
6
 
8
- # must raise ArgumentError when format is invalid
9
- def formatted_to_bigdecimal(formatted)
10
- BigDecimal.new formatted.tr('.', '').tr(',', '.')
7
+ private
8
+
9
+ def format_delimiter
10
+ '.'
11
11
  end
12
12
 
13
- def bigdecimal_to_formatted(internal)
14
- ActiveSupport::NumberHelper::NumberToDelimitedConverter.convert(internal, {})
13
+ def format_separator
14
+ ','
15
15
  end
16
16
  end
17
17
  end
@@ -3,15 +3,17 @@ require 'bigdecimal'
3
3
  module D12n
4
4
  module Strategy
5
5
  module DecimalPoint
6
+ include Default
6
7
  extend self
7
8
 
8
- # must raise ArgumentError when format is invalid
9
- def formatted_to_bigdecimal(formatted)
10
- BigDecimal.new formatted.tr(',', '')
9
+ private
10
+
11
+ def format_delimiter
12
+ ','
11
13
  end
12
14
 
13
- def bigdecimal_to_formatted(internal)
14
- ActiveSupport::NumberHelper::NumberToDelimitedConverter.convert(internal, {})
15
+ def format_separator
16
+ '.'
15
17
  end
16
18
  end
17
19
  end
@@ -0,0 +1,28 @@
1
+ module D12n
2
+ module Strategy
3
+ module Default
4
+ extend self
5
+
6
+ # must raise ArgumentError when format is invalid
7
+ def formatted_to_bigdecimal(formatted)
8
+ BigDecimal.new formatted.tr(format_delimiter, '').tr(format_separator, '.')
9
+ end
10
+
11
+ def bigdecimal_to_formatted(internal)
12
+ ActiveSupport::NumberHelper::NumberToDelimitedConverter.convert(internal, {})
13
+ end
14
+
15
+ private
16
+
17
+ # seperates the thousands, eg 1,000
18
+ def format_delimiter
19
+ ::I18n.translate(:'number.format.delimiter')
20
+ end
21
+
22
+ # seperates the decimal points, eg 9.95
23
+ def format_separator
24
+ ::I18n.translate(:'number.format.separator')
25
+ end
26
+ end
27
+ end
28
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: d12n
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Munteanu
@@ -30,6 +30,20 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '6'
33
+ - !ruby/object:Gem::Dependency
34
+ name: i18n
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.7'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.7'
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: rspec
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -71,6 +85,7 @@ files:
71
85
  - lib/d12n/model_support.rb
72
86
  - lib/d12n/strategy/decimal_comma.rb
73
87
  - lib/d12n/strategy/decimal_point.rb
88
+ - lib/d12n/strategy/default.rb
74
89
  homepage: https://github.com/mkon/d12n
75
90
  licenses:
76
91
  - MIT