monetize 1.13.0 → 2.0.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
  SHA256:
3
- metadata.gz: 07adb2e223118b56f5944a6b90b8c51901df761f6b5ecebea8fd8ee8dea3343e
4
- data.tar.gz: a61b3fda9d0c22fefb028043db74625c91083787068b31ecf639a05286f92cff
3
+ metadata.gz: 027fe3fe8fd8bf031ee1eeca954ccd33d64b09f7c1d611beef48758640f79ece
4
+ data.tar.gz: 252c3d7a5f4f922d0385ca6b7b10dffdbcf358a896afc5ba4a621298c966ae39
5
5
  SHA512:
6
- metadata.gz: 6d4774d81cc075b5c68849cd07c69f2311683f16adfbb00075d85e7530f4a1cb052a82a1b772b812b9b029fbe47b8b4400aabb0588ce27a35ef6e9d6340122cb
7
- data.tar.gz: c5e7266b20bf556a2619974f8d97a690e6817eec1a56e9cd0497c6569bc36c681fc417c19900fa95c1ae7fcf7c10569867bec072d4a25e8c99d6f49c0b9901e1
6
+ metadata.gz: 29bc1cef3e339731a0aa98f8d5198c81207f063c925650c5f42b8e23830f22dd1c35268b53d6f5296bfb0a15d59bbb08bc1b914967abc0eeda3282f7e0dcd8d4
7
+ data.tar.gz: af197d3990bc1a5488140912c7e5b39a9140a0bdf0247540ea3c9ef697044f20b8b9eab8691469bacf313a36e5ee3793c6c332e9353bf3cb676f98ba88bc1d8d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ## 2.0.1
6
+ - Fix parsing of ISO codes not in `Monetize::Parser::CURRENCY_SYMBOLS`. `Monetize.parse('20.00 DKK')` returned 20.00 in the default currency instead of 20.00 DKK.
7
+
8
+ ## 2.0.0
9
+ - **Breaking change**: Remove deprecated `Monetize.extract_cents`.
10
+ - **Breaking change**: Update Money gem dependency to ~> 7.0. See the [Money 7.0 upgrading guide](https://github.com/RubyMoney/money/blob/main/UPGRADING-7.0.md)
11
+ - **Breaking change**: Drop support for Ruby < 3.1
12
+ - Fix parsing multiple delimeters in the amount, after BigDecimal updates
13
+ - Fix unused variable `possible_major` Ruby warning.
14
+
15
+ ## 1.13.0
16
+ - **Breaking change**: check ISO currency code validity when parsing strings with `to_money`
17
+ - Adds `expect_whole_subunits` option when fractional subunits are expected
18
+ - Add MYR, IDR, SGD, HKD, TWD, and PHP symbol to currency conversion
19
+
3
20
  ## 1.12.0
4
21
  - Update `to_money` to match money-rails to_hash.
5
22
 
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 Shane Emmons
3
+ Copyright (c) 2025 Shane Emmons
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,10 +1,8 @@
1
1
  # Monetize
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/monetize.svg)](http://badge.fury.io/rb/monetize)
4
- [![Build Status](https://travis-ci.org/RubyMoney/monetize.svg?branch=master)](https://travis-ci.org/RubyMoney/monetize)
5
- [![Code Climate](https://codeclimate.com/github/RubyMoney/monetize.svg)](https://codeclimate.com/github/RubyMoney/monetize)
6
- [![Dependency Status](https://gemnasium.com/RubyMoney/monetize.svg)](https://gemnasium.com/RubyMoney/monetize)
7
- [![License](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT)
3
+ [![Gem Version](https://badge.fury.io/rb/monetize.svg)](https://rubygems.org/gems/monetize)
4
+ [![Ruby](https://github.com/RubyMoney/monetize/actions/workflows/ruby.yml/badge.svg)](https://github.com/RubyMoney/monetize/actions/workflows/ruby.yml)
5
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://opensource.org/license/MIT)
8
6
 
9
7
  A library for converting various objects into `Money` objects.
10
8
 
@@ -28,16 +26,6 @@ Monetize.parse("GBP 100") == Money.new(100_00, "GBP")
28
26
  "100".to_money == Money.new(100_00, "USD")
29
27
  ```
30
28
 
31
- `parse` will return `nil` if it is unable to parse the input. Use `parse!` instead if you want a `Monetize::Error` (or one of the subclasses) to be raised instead:
32
-
33
- ```ruby
34
- >> Monetize.parse('OMG 100')
35
- => nil
36
-
37
- >> Monetize.parse!('OMG 100')
38
- Monetize::ParseError: Unknown currency 'omg'
39
- ```
40
-
41
29
  Optionally, enable the ability to assume the currency from a passed symbol. Otherwise, currency symbols will be ignored, and USD used as the default currency:
42
30
 
43
31
  ```ruby
@@ -49,7 +37,7 @@ Monetize.parse("£100") == Money.new(100_00, "GBP")
49
37
  "€100".to_money == Money.new(100_00, "EUR")
50
38
  ```
51
39
 
52
- Parsing can be improved where the input is not expected to contain fractonal subunits.
40
+ Parsing can be improved where the input is not expected to contain fractional subunits.
53
41
  To do this, set `Monetize.expect_whole_subunits = true`
54
42
 
55
43
  ```ruby
@@ -60,12 +48,12 @@ Monetize.parse('EUR 10,000') == Money.new(10_000_00, "EUR")
60
48
  ```
61
49
 
62
50
  Why does this work? If we expect fractional subunits then the parser will treat a single
63
- delimiter as a decimal marker if it matches the currency's decimal marker. But often
51
+ delimiter as a decimal marker if it matches the currency's decimal marker. But often
64
52
  this is not the case - a European site will show $10.000 because that's the local format.
65
53
  As a human, if this was a stock ticker we might expect fractional cents. If it's a retail price we know it's actually an incorrect thousands separator.
66
54
 
67
55
 
68
- Monetize can also parse a list of values, returning an array-like object ([Monetize::Collection](lib/collection.rb)):
56
+ Monetize can also parse a list of values, returning an array-like object ([Monetize::Collection](lib/monetize/collection.rb)):
69
57
 
70
58
  ```ruby
71
59
  Monetize.parse_collection("€80/$100") == [Money.new(80_00, "EUR"), Money.new(100_00, "USD")]
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  require 'forwardable'
4
2
 
5
3
  module Monetize
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  class Hash
4
2
  def to_money(currency = nil)
5
3
  money_hash = self.respond_to?(:with_indifferent_access) ? self.with_indifferent_access : self
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  class Numeric
4
2
  def to_money(currency = nil)
5
3
  Monetize.from_numeric(self, currency || Money.default_currency)
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  class String
4
2
  def to_money(currency = nil)
5
3
  Monetize.parse!(self, currency)
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  class Symbol
4
2
  def to_currency
5
3
  Money::Currency.new(self)
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  require 'monetize/core_extensions/nil_class'
4
2
  require 'monetize/core_extensions/numeric'
5
3
  require 'monetize/core_extensions/string'
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Monetize
4
2
  class Parser
5
3
  CURRENCY_SYMBOLS = {
@@ -31,11 +29,14 @@ module Monetize
31
29
  '₱' => 'PHP',
32
30
  }
33
31
 
32
+ CURRENCY_SYMBOL_REGEX = /(?<![A-Z])(#{CURRENCY_SYMBOLS.keys.map { |key| Regexp.escape(key) }.join('|')})(?![A-Z])/i
34
33
  MULTIPLIER_SUFFIXES = { 'K' => 3, 'M' => 6, 'B' => 9, 'T' => 12 }
35
34
  MULTIPLIER_SUFFIXES.default = 0
36
35
  MULTIPLIER_REGEXP = Regexp.new(format('^(.*?\d)(%s)\b([^\d]*)$', MULTIPLIER_SUFFIXES.keys.join('|')), 'i')
37
36
 
38
37
  DEFAULT_DECIMAL_MARK = '.'.freeze
38
+ DEFAULT_MINOR = "00".freeze
39
+ private_constant :DEFAULT_MINOR
39
40
 
40
41
  def initialize(input, fallback_currency = Money.default_currency, options = {})
41
42
  @input = input.to_s.strip
@@ -44,19 +45,13 @@ module Monetize
44
45
  end
45
46
 
46
47
  def parse
47
- currency = Money::Currency.wrap(parse_currency)
48
-
49
48
  multiplier_exp, input = extract_multiplier
50
49
 
51
50
  num = input.gsub(/(?:^#{currency.symbol}|[^\d.,'-]+)/, '')
52
51
 
53
52
  negative, num = extract_sign(num)
54
53
 
55
- num.chop! if num =~ /[\.|,]$/
56
-
57
- major, minor = extract_major_minor(num, currency)
58
-
59
- amount = to_big_decimal([major, minor].join(DEFAULT_DECIMAL_MARK))
54
+ amount = to_big_decimal(normalize_number(num))
60
55
  amount = apply_multiplier(multiplier_exp, amount)
61
56
  amount = apply_sign(negative, amount)
62
57
 
@@ -65,6 +60,12 @@ module Monetize
65
60
 
66
61
  private
67
62
 
63
+ def normalize_number(num)
64
+ clean_num = num.sub(/[\.|,]$/, "")
65
+
66
+ extract_major_minor(clean_num).join(DEFAULT_DECIMAL_MARK)
67
+ end
68
+
68
69
  def to_big_decimal(value)
69
70
  BigDecimal(value)
70
71
  rescue ::ArgumentError => err
@@ -73,14 +74,19 @@ module Monetize
73
74
 
74
75
  attr_reader :input, :fallback_currency, :options
75
76
 
77
+ def currency
78
+ @currency ||= Money::Currency.wrap(parse_currency)
79
+ end
80
+
76
81
  def parse_currency
77
82
  computed_currency = nil
78
83
  computed_currency = input[/[A-Z]{2,3}/]
79
- computed_currency = nil unless Monetize::Parser::CURRENCY_SYMBOLS.value?(computed_currency)
84
+ computed_currency = nil unless Money::Currency.find(computed_currency)
80
85
  computed_currency ||= compute_currency if assume_from_symbol?
81
86
 
82
-
83
- computed_currency || fallback_currency || Money.default_currency
87
+ found = computed_currency || fallback_currency || Money.default_currency
88
+ raise Money::Currency::UnknownCurrency unless found
89
+ found
84
90
  end
85
91
 
86
92
  def assume_from_symbol?
@@ -100,68 +106,69 @@ module Monetize
100
106
  end
101
107
 
102
108
  def compute_currency
103
- match = input.match(currency_symbol_regex)
109
+ match = input.match(CURRENCY_SYMBOL_REGEX)
104
110
  CURRENCY_SYMBOLS[match.to_s] if match
105
111
  end
106
112
 
107
- def extract_major_minor(num, currency)
113
+ def remove_separator(num, separator)
114
+ num.gsub(separator, "")
115
+ end
116
+
117
+ def extract_major_minor(num)
108
118
  used_delimiters = num.scan(/[^\d]/).uniq
109
119
 
110
120
  case used_delimiters.length
111
121
  when 0
112
- [num, 0]
122
+ [num, DEFAULT_MINOR]
123
+ when 1
124
+ extract_major_minor_with_single_delimiter(num, used_delimiters.first)
113
125
  when 2
114
126
  thousands_separator, decimal_mark = used_delimiters
115
- split_major_minor(num.gsub(thousands_separator, ''), decimal_mark)
116
- when 1
117
- extract_major_minor_with_single_delimiter(num, currency, used_delimiters.first)
127
+ num = remove_separator(num, thousands_separator)
128
+
129
+ split_major_minor(num, decimal_mark)
118
130
  else
119
131
  fail ParseError, 'Invalid amount'
120
132
  end
121
133
  end
122
134
 
123
- def minor_has_correct_dp_for_currency_subunit?(minor, currency)
124
- minor.length == currency.subunit_to_unit.to_s.length - 1
135
+ def minor_has_correct_decimal_places_for_currency?(minor)
136
+ minor.length == currency.decimal_places
125
137
  end
126
138
 
127
- def extract_major_minor_with_single_delimiter(num, currency, delimiter)
139
+ def extract_major_minor_with_single_delimiter(num, delimiter)
128
140
  if expect_whole_subunits?
129
141
  possible_major, possible_minor = split_major_minor(num, delimiter)
130
- if minor_has_correct_dp_for_currency_subunit?(possible_minor, currency)
131
- split_major_minor(num, delimiter)
132
- else
133
- extract_major_minor_with_tentative_delimiter(num, delimiter)
134
- end
135
- else
136
- if delimiter == currency.decimal_mark
137
- split_major_minor(num, delimiter)
138
- elsif Monetize.enforce_currency_delimiters && delimiter == currency.thousands_separator
139
- [num.gsub(delimiter, ''), 0]
140
- else
141
- extract_major_minor_with_tentative_delimiter(num, delimiter)
142
+
143
+ if minor_has_correct_decimal_places_for_currency?(possible_minor)
144
+ return [possible_major, possible_minor]
142
145
  end
146
+ elsif delimiter == currency.decimal_mark
147
+ return split_major_minor(num, delimiter)
148
+ elsif Monetize.enforce_currency_delimiters && delimiter == currency.thousands_separator
149
+ return [remove_separator(num, delimiter), DEFAULT_MINOR]
143
150
  end
151
+
152
+ extract_major_minor_with_tentative_delimiter(num, delimiter)
144
153
  end
145
154
 
146
155
  def extract_major_minor_with_tentative_delimiter(num, delimiter)
147
156
  if num.scan(delimiter).length > 1
148
157
  # Multiple matches; treat as thousands separator
149
- [num.gsub(delimiter, ''), '00']
150
- else
151
- possible_major, possible_minor = split_major_minor(num, delimiter)
158
+ return [remove_separator(num, delimiter), DEFAULT_MINOR]
159
+ end
152
160
 
153
- # Doesn't look like thousands separator
154
- is_decimal_mark = possible_minor.length != 3 ||
155
- possible_major.length > 3 ||
156
- possible_major.to_i == 0 ||
157
- (!expect_whole_subunits? && delimiter == '.')
161
+ possible_major, possible_minor = split_major_minor(num, delimiter)
158
162
 
159
- if is_decimal_mark
160
- [possible_major, possible_minor]
161
- else
162
- ["#{possible_major}#{possible_minor}", '00']
163
- end
164
- end
163
+ # Doesn't look like thousands separator
164
+ is_decimal_mark = possible_minor.length != 3 ||
165
+ possible_major.length > 3 ||
166
+ possible_major.to_i == 0 ||
167
+ (!expect_whole_subunits? && delimiter == ".")
168
+
169
+ return [possible_major, possible_minor] if is_decimal_mark
170
+
171
+ ["#{possible_major}#{possible_minor}", DEFAULT_MINOR]
165
172
  end
166
173
 
167
174
  def extract_multiplier
@@ -179,17 +186,13 @@ module Monetize
179
186
  result
180
187
  end
181
188
 
182
- def regex_safe_symbols
183
- CURRENCY_SYMBOLS.keys.map { |key| Regexp.escape(key) }.join('|')
184
- end
185
-
186
189
  def split_major_minor(num, delimiter)
187
- major, minor = num.split(delimiter)
188
- [major, minor || '00']
189
- end
190
+ splits = num.split(delimiter)
191
+ fail ParseError, 'Invalid amount (multiple delimiters)' if splits.length > 2
192
+
193
+ splits[1] ||= DEFAULT_MINOR
190
194
 
191
- def currency_symbol_regex
192
- /(?<![A-Z])(#{regex_safe_symbols})(?![A-Z])/i
195
+ splits
193
196
  end
194
197
  end
195
198
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Monetize
4
- VERSION = '1.13.0'
2
+ VERSION = '2.0.1'
5
3
  end
data/lib/monetize.rb CHANGED
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  require 'money'
4
2
  require 'monetize/core_extensions'
5
3
  require 'monetize/errors'
@@ -21,8 +19,8 @@ module Monetize
21
19
  attr_accessor :enforce_currency_delimiters
22
20
 
23
21
 
24
- # Where this set to true, the behavior for parsing thousands separators is changed to
25
- # expect that eg. €10.000 is EUR 10 000 and not EUR 10.000 - it's incredibly rare when parsing
22
+ # Where this set to true, the behavior for parsing thousands separators is changed to
23
+ # expect that eg. €10.000 is EUR 10 000 and not EUR 10.000 - it's incredibly rare when parsing
26
24
  # human text that we're dealing with fractions of cents.
27
25
  attr_accessor :expect_whole_subunits
28
26
 
@@ -70,12 +68,5 @@ module Monetize
70
68
  fail ArgumentError, "'value' should be a type of Numeric" unless value.is_a?(Numeric)
71
69
  Money.from_amount(value, currency)
72
70
  end
73
-
74
- def extract_cents(input, currency = Money.default_currency)
75
- warn '[DEPRECATION] Monetize.extract_cents is deprecated. Use Monetize.parse().cents'
76
-
77
- money = parse(input, currency)
78
- money.cents if money
79
- end
80
71
  end
81
72
  end
data/monetize.gemspec CHANGED
@@ -1,33 +1,31 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path("lib", __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'monetize/version'
5
- require 'English'
5
+ require "monetize/version"
6
6
 
7
- Gem::Specification.new do |spec|
8
- spec.name = 'monetize'
9
- spec.version = Monetize::VERSION
10
- spec.authors = ['Shane Emmons', 'Anthony Dmitriyev']
11
- spec.email = ['shane@emmons.io', 'anthony.dmitriyev@gmail.com']
12
- spec.description = 'A library for converting various objects into `Money` objects.'
13
- spec.summary = 'A library for converting various objects into `Money` objects.'
14
- spec.homepage = 'https://github.com/RubyMoney/monetize'
15
- spec.license = 'MIT'
7
+ Gem::Specification.new do |s|
8
+ s.name = "monetize"
9
+ s.version = Monetize::VERSION
10
+ s.platform = Gem::Platform::RUBY
11
+ s.authors = ["Shane Emmons", "Anthony Dmitriyev"]
12
+ s.email = ["shane@emmons.io", "anthony.dmitriyev@gmail.com"]
13
+ s.homepage = "https://github.com/RubyMoney/monetize"
14
+ s.summary = "A library for converting various objects into `Money` objects."
15
+ s.description = "A library for converting various objects into `Money` objects."
16
+ s.license = "MIT"
16
17
 
17
- spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
18
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
- spec.require_paths = ['lib']
18
+ s.add_dependency "money", "~> 7.0"
21
19
 
22
- spec.add_dependency 'money', '~> 6.12'
20
+ s.required_ruby_version = ">= 3.1"
23
21
 
24
- spec.add_development_dependency 'bundler'
25
- spec.add_development_dependency 'rake', '~> 10.2'
26
- spec.add_development_dependency 'rspec', '~> 3.0'
22
+ s.files = `git ls-files -z -- lib/* CHANGELOG.md LICENSE monetize.gemspec README.md`.split("\x0")
23
+ s.require_paths = ["lib"]
27
24
 
28
- if spec.respond_to?(:metadata)
29
- spec.metadata['changelog_uri'] = 'https://github.com/RubyMoney/monetize/blob/master/CHANGELOG.md'
30
- spec.metadata['source_code_uri'] = 'https://github.com/RubyMoney/monetize/'
31
- spec.metadata['bug_tracker_uri'] = 'https://github.com/RubyMoney/monetize/issues'
25
+ if s.respond_to?(:metadata)
26
+ s.metadata["changelog_uri"] = "https://github.com/RubyMoney/monetize/blob/master/CHANGELOG.md"
27
+ s.metadata["source_code_uri"] = "https://github.com/RubyMoney/monetize/"
28
+ s.metadata["bug_tracker_uri"] = "https://github.com/RubyMoney/monetize/issues"
29
+ s.metadata["rubygems_mfa_required"] = "true"
32
30
  end
33
31
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monetize
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Emmons
8
8
  - Anthony Dmitriyev
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2024-01-29 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: money
@@ -17,56 +16,14 @@ dependencies:
17
16
  requirements:
18
17
  - - "~>"
19
18
  - !ruby/object:Gem::Version
20
- version: '6.12'
19
+ version: '7.0'
21
20
  type: :runtime
22
21
  prerelease: false
23
22
  version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
24
  - - "~>"
26
25
  - !ruby/object:Gem::Version
27
- version: '6.12'
28
- - !ruby/object:Gem::Dependency
29
- name: bundler
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: rake
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: '10.2'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: '10.2'
56
- - !ruby/object:Gem::Dependency
57
- name: rspec
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '3.0'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '3.0'
26
+ version: '7.0'
70
27
  description: A library for converting various objects into `Money` objects.
71
28
  email:
72
29
  - shane@emmons.io
@@ -75,15 +32,9 @@ executables: []
75
32
  extensions: []
76
33
  extra_rdoc_files: []
77
34
  files:
78
- - ".github/workflows/ruby.yml"
79
- - ".gitignore"
80
- - ".rubocop.yml"
81
35
  - CHANGELOG.md
82
- - CONTRIBUTING.md
83
- - Gemfile
84
36
  - LICENSE
85
37
  - README.md
86
- - Rakefile
87
38
  - lib/monetize.rb
88
39
  - lib/monetize/collection.rb
89
40
  - lib/monetize/core_extensions.rb
@@ -96,9 +47,6 @@ files:
96
47
  - lib/monetize/parser.rb
97
48
  - lib/monetize/version.rb
98
49
  - monetize.gemspec
99
- - spec/core_extensions_spec.rb
100
- - spec/monetize_spec.rb
101
- - spec/spec_helper.rb
102
50
  homepage: https://github.com/RubyMoney/monetize
103
51
  licenses:
104
52
  - MIT
@@ -106,7 +54,7 @@ metadata:
106
54
  changelog_uri: https://github.com/RubyMoney/monetize/blob/master/CHANGELOG.md
107
55
  source_code_uri: https://github.com/RubyMoney/monetize/
108
56
  bug_tracker_uri: https://github.com/RubyMoney/monetize/issues
109
- post_install_message:
57
+ rubygems_mfa_required: 'true'
110
58
  rdoc_options: []
111
59
  require_paths:
112
60
  - lib
@@ -114,18 +62,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
62
  requirements:
115
63
  - - ">="
116
64
  - !ruby/object:Gem::Version
117
- version: '0'
65
+ version: '3.1'
118
66
  required_rubygems_version: !ruby/object:Gem::Requirement
119
67
  requirements:
120
68
  - - ">="
121
69
  - !ruby/object:Gem::Version
122
70
  version: '0'
123
71
  requirements: []
124
- rubygems_version: 3.5.3
125
- signing_key:
72
+ rubygems_version: 4.0.17
126
73
  specification_version: 4
127
74
  summary: A library for converting various objects into `Money` objects.
128
- test_files:
129
- - spec/core_extensions_spec.rb
130
- - spec/monetize_spec.rb
131
- - spec/spec_helper.rb
75
+ test_files: []
@@ -1,34 +0,0 @@
1
- # This workflow uses actions that are not certified by GitHub.
2
- # They are provided by a third-party and are governed by
3
- # separate terms of service, privacy policy, and support
4
- # documentation.
5
- # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
- # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
-
8
- name: Ruby
9
-
10
- on:
11
- push:
12
- branches: [ main ]
13
- pull_request:
14
- branches: [ main ]
15
-
16
- jobs:
17
- test:
18
-
19
- runs-on: ubuntu-latest
20
- strategy:
21
- matrix:
22
- ruby-version: ['2.6', '2.7', '3.0', '3.1', '3.2']
23
-
24
- steps:
25
- - uses: actions/checkout@v3
26
- - name: Set up Ruby
27
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
28
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
29
- uses: ruby/setup-ruby@v1
30
- with:
31
- ruby-version: ${{ matrix.ruby-version }}
32
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
33
- - name: Run tests
34
- run: bundle exec rspec spec
data/.gitignore DELETED
@@ -1,18 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- .ruby-version
data/.rubocop.yml DELETED
@@ -1,32 +0,0 @@
1
- Documentation:
2
- Enabled: false
3
- Metrics/AbcSize:
4
- Enabled: false
5
- Metrics/ClassLength:
6
- Enabled: false
7
- Metrics/MethodLength:
8
- Enabled: false
9
- Metrics/ModuleLength:
10
- Enabled: false
11
- Style/AndOr:
12
- Enabled: false
13
- Style/ClassAndModuleChildren:
14
- Enabled: false
15
- Style/PerlBackrefs:
16
- Enabled: false
17
-
18
- Style/CollectionMethods:
19
- Enabled: yes
20
- Lint/LiteralInInterpolation:
21
- Enabled: yes
22
-
23
- Metrics/LineLength:
24
- Max: 120
25
- Metrics/ParameterLists:
26
- CountKeywordArgs: false
27
- Style/DotPosition:
28
- EnforcedStyle: trailing
29
- Style/EmptyElse:
30
- EnforcedStyle: empty
31
- Style/SpaceInsideHashLiteralBraces:
32
- EnforcedStyle: no_space