commissioner-guy 0.1.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe7e70de62af11761a16e9f9a1375aa837abc96e7a9c6d5ae7054a502036c69f
4
- data.tar.gz: 7f75bd17875adc6aefa876d59e99d12c84ced25f775fade72873b128b3a954ae
3
+ metadata.gz: '09145e647b6a57e336c094804b5cae11c6aa1346a3bacda852f6119a0e79a322'
4
+ data.tar.gz: 20a9ced63f0ecab83195834d36b710a9bf1a0e9d6cf3aea557347cd976c98f22
5
5
  SHA512:
6
- metadata.gz: d7a2d80c717ac710a51863745b69cb54d6c0c077a7c4d7c68167b4d42988ef530482396b38abf659a1375690694d42674dbadfc7b9a312f04d031b1c7cd1a9cb
7
- data.tar.gz: a6286246d68e4a1860c808d5e8566ede9490a63ac5333b18ca1b5d4cbdea772c7fa189b124f8c5341207512aaac11bd559ccc5b44034d9e5036298a2137a46c2
6
+ metadata.gz: '006658ff7ea4801acf352c15c8fb192970fbecab106e548596b69910332612bd62a78daf935db3583c03efbb699ef6f04eb7de3412512e7f6a387d6b04d1499d'
7
+ data.tar.gz: 749dfe3e31731ddde638be7d7e84bf2a1e9d28d77352183ad97c4a10dcb84bbdfcf75e5cff8035aca3f298c387b639f13891c2be21d4edd4c1631041e01263bc
@@ -0,0 +1 @@
1
+ inherit_from: .rubocop_todo.yml
@@ -0,0 +1,61 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2020-12-12 19:03:34 UTC using RuboCop version 1.6.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ # Configuration parameters: Include.
11
+ # Include: **/*.gemspec
12
+ Gemspec/RequiredRubyVersion:
13
+ Exclude:
14
+ - 'commissioner.gemspec'
15
+
16
+ # Offense count: 2
17
+ # Configuration parameters: AllowedMethods.
18
+ # AllowedMethods: enums
19
+ Lint/ConstantDefinitionInBlock:
20
+ Exclude:
21
+ - 'spec/commissioner/mixin_spec.rb'
22
+
23
+ # Offense count: 2
24
+ # Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
25
+ Metrics/AbcSize:
26
+ Max: 19
27
+
28
+ # Offense count: 5
29
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
30
+ # IgnoredMethods: refine
31
+ Metrics/BlockLength:
32
+ Max: 98
33
+
34
+ # Offense count: 1
35
+ # Configuration parameters: CountComments, CountAsOne.
36
+ Metrics/ClassLength:
37
+ Max: 101
38
+
39
+ # Offense count: 1
40
+ # Configuration parameters: IgnoredMethods.
41
+ Metrics/CyclomaticComplexity:
42
+ Max: 8
43
+
44
+ # Offense count: 5
45
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
46
+ Metrics/MethodLength:
47
+ Max: 20
48
+
49
+ # Offense count: 2
50
+ Style/ClassVars:
51
+ Exclude:
52
+ - 'lib/commissioner/mixin.rb'
53
+
54
+ # Offense count: 4
55
+ Style/Documentation:
56
+ Exclude:
57
+ - 'spec/**/*'
58
+ - 'test/**/*'
59
+ - 'lib/commissioner.rb'
60
+ - 'lib/commissioner/calculator.rb'
61
+ - 'lib/commissioner/mixin.rb'
@@ -7,4 +7,5 @@ rvm:
7
7
  before_install: gem install bundler -v 1.17.3
8
8
 
9
9
  script:
10
+ - bundle exec rubocop
10
11
  - bundle exec rspec
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ source 'https://rubygems.org'
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
6
 
5
7
  # Specify your gem's dependencies in exchanger.gemspec
6
8
  gemspec
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- commissioner-guy (0.1.1)
4
+ commissioner-guy (0.2.0)
5
5
  dry-auto_inject (~> 0.6)
6
6
  dry-configurable (~> 0.11)
7
7
  money (~> 6.13.8)
@@ -9,6 +9,9 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
+ ast (2.4.1)
13
+ byebug (11.1.3)
14
+ coderay (1.1.3)
12
15
  concurrent-ruby (1.1.7)
13
16
  diff-lcs (1.4.4)
14
17
  dry-auto_inject (0.7.0)
@@ -20,14 +23,27 @@ GEM
20
23
  dry-container (0.7.2)
21
24
  concurrent-ruby (~> 1.0)
22
25
  dry-configurable (~> 0.1, >= 0.1.3)
23
- dry-core (0.4.10)
26
+ dry-core (0.5.0)
24
27
  concurrent-ruby (~> 1.0)
25
28
  dry-equalizer (0.3.0)
26
29
  i18n (1.8.5)
27
30
  concurrent-ruby (~> 1.0)
31
+ method_source (1.0.0)
28
32
  money (6.13.8)
29
33
  i18n (>= 0.6.4, <= 2)
34
+ parallel (1.20.1)
35
+ parser (2.7.2.0)
36
+ ast (~> 2.4.1)
37
+ pry (0.13.1)
38
+ coderay (~> 1.1)
39
+ method_source (~> 1.0)
40
+ pry-byebug (3.9.0)
41
+ byebug (~> 11.0)
42
+ pry (~> 0.13.0)
43
+ rainbow (3.0.0)
30
44
  rake (10.5.0)
45
+ regexp_parser (2.0.0)
46
+ rexml (3.2.4)
31
47
  rspec (3.10.0)
32
48
  rspec-core (~> 3.10.0)
33
49
  rspec-expectations (~> 3.10.0)
@@ -41,6 +57,19 @@ GEM
41
57
  diff-lcs (>= 1.2.0, < 2.0)
42
58
  rspec-support (~> 3.10.0)
43
59
  rspec-support (3.10.0)
60
+ rubocop (1.6.1)
61
+ parallel (~> 1.10)
62
+ parser (>= 2.7.1.5)
63
+ rainbow (>= 2.2.2, < 4.0)
64
+ regexp_parser (>= 1.8, < 3.0)
65
+ rexml
66
+ rubocop-ast (>= 1.2.0, < 2.0)
67
+ ruby-progressbar (~> 1.7)
68
+ unicode-display_width (>= 1.4.0, < 2.0)
69
+ rubocop-ast (1.3.0)
70
+ parser (>= 2.7.1.5)
71
+ ruby-progressbar (1.10.1)
72
+ unicode-display_width (1.7.0)
44
73
 
45
74
  PLATFORMS
46
75
  ruby
@@ -48,8 +77,10 @@ PLATFORMS
48
77
  DEPENDENCIES
49
78
  bundler (~> 1.17)
50
79
  commissioner-guy!
80
+ pry-byebug (~> 3.9.0)
51
81
  rake (~> 10.0)
52
82
  rspec (~> 3.0)
83
+ rubocop (~> 1.6.1)
53
84
 
54
85
  BUNDLED WITH
55
86
  1.17.3
data/README.md CHANGED
@@ -77,6 +77,76 @@ class MyCalculator
77
77
  end
78
78
  ```
79
79
 
80
+ #### Specify order
81
+
82
+ You can specify in which order calculation will be applied. The steps are:
83
+
84
+ - exchange
85
+ - commission
86
+ - exchange_commission
87
+
88
+ `exchange` - calls exchanger if currencies of received and charged amounts differ
89
+ `commission` - applies typical commission operation
90
+ `exchange_commission` - applies commission for exchange (in charged currency if ordered before `exchange` or in received currency if ordered after `exchange`)
91
+
92
+ ```ruby
93
+ class MyCalculator
94
+ include Commissioner::Mixin
95
+
96
+ # Default order is:
97
+ # - :commission
98
+ # - :exchange
99
+ # - :exchange_commission
100
+
101
+ Order[
102
+ :commission,
103
+ :exchange_commission,
104
+ :exchange
105
+ ]
106
+ end
107
+
108
+ MyCalculator.new.calculate(
109
+ received_amount: 100,
110
+ received_currency: 'EUR',
111
+ charged_currency: 'USD',
112
+ commission: 10,
113
+ exchange_commission: 15
114
+ ).to_h
115
+ # =>
116
+ # {
117
+ # :received_amount => #<Money fractional:10000 currency:EUR>,
118
+ # :charged_amount => #<Money fractional:13072 currency:USD>,
119
+ # :fee => #<Money fractional:1307 currency:USD>,
120
+ # :exchange_fee => #<Money fractional:1765 currency:USD>,
121
+ # :exchange_rate => 1
122
+ # }
123
+
124
+ # Changing the order
125
+ class MyCalculator
126
+ Order[
127
+ :exchange_commission,
128
+ :exchange,
129
+ :commission
130
+ ]
131
+ end
132
+
133
+ MyCalculator.new.calculate(
134
+ received_amount: 100,
135
+ received_currency: 'EUR',
136
+ charged_currency: 'USD',
137
+ commission: 10,
138
+ exchange_commission: 15
139
+ ).to_h
140
+ # =>
141
+ # {
142
+ # :received_amount => #<Money fractional:10000 currency:EUR>,
143
+ # :charged_amount => #<Money fractional:13072 currency:USD>,
144
+ # :fee => #<Money fractional:1111 currency:EUR>,
145
+ # :exchange_fee => #<Money fractional:1961 currency:USD>,
146
+ # :exchange_rate => 1
147
+ # }
148
+ ```
149
+
80
150
  ## Development
81
151
 
82
152
  - [x] Custom exchanger
@@ -84,7 +154,8 @@ end
84
154
  - [x] Commission for operation
85
155
  - [x] Commission for exchange
86
156
  - [x] No matter whether received or charged amount is provided, the calculation result is the same
87
- - [ ] User-defined order of commissions aplying
157
+ - [x] User-defined order of commissions aplying and exchanging
158
+ - [ ] Custom commissions and exchanges in order
88
159
 
89
160
  ## Contributing
90
161
 
data/Rakefile CHANGED
@@ -1,9 +1,11 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
7
9
 
8
10
  task :build do
9
11
  sh 'gem build commissioner.gemspec'
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "exchanger"
4
+ require 'bundler/setup'
5
+ require 'exchanger'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +11,5 @@ require "exchanger"
10
11
  # require "pry"
11
12
  # Pry.start
12
13
 
13
- require "irb"
14
+ require 'irb'
14
15
  IRB.start(__FILE__)
@@ -1,4 +1,6 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'commissioner/version'
4
6
 
@@ -8,8 +10,8 @@ Gem::Specification.new do |spec|
8
10
  spec.authors = ['Valentine Kiselev']
9
11
  spec.email = ['mrexox@outlook.com']
10
12
 
11
- spec.summary = %q{A simple gem to calculate money based on provided amounts.}
12
- spec.description = %q{A simple gem to calculate money based on provided amounts.}
13
+ spec.summary = 'A simple gem to calculate money based on provided amounts.'
14
+ spec.description = 'A simple gem to calculate money based on provided amounts.'
13
15
  spec.homepage = 'https://github.com/mrexox/commissioner'
14
16
  spec.license = 'MIT'
15
17
 
@@ -25,17 +27,19 @@ Gem::Specification.new do |spec|
25
27
 
26
28
  # Specify which files should be added to the gem when it is released.
27
29
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
28
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
30
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
29
31
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
30
32
  end
31
33
 
32
34
  spec.require_paths = ['lib']
33
35
 
34
- spec.add_runtime_dependency 'dry-configurable', '~> 0.11'
35
36
  spec.add_runtime_dependency 'dry-auto_inject', '~> 0.6'
37
+ spec.add_runtime_dependency 'dry-configurable', '~> 0.11'
36
38
  spec.add_runtime_dependency 'money', '~> 6.13.8'
37
39
 
38
40
  spec.add_development_dependency 'bundler', '~> 1.17'
41
+ spec.add_development_dependency 'pry-byebug', '~> 3.9.0'
39
42
  spec.add_development_dependency 'rake', '~> 10.0'
40
43
  spec.add_development_dependency 'rspec', '~> 3.0'
44
+ spec.add_development_dependency 'rubocop', '~> 1.6.1'
41
45
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'commissioner/version'
2
4
  require 'commissioner/calculator'
3
5
  require 'commissioner/mixin'
@@ -11,6 +13,6 @@ module Commissioner
11
13
  setting :rounding_mode, :half_up # possible values: :up, :down, :half_up, :half_even
12
14
 
13
15
  def self.calculate(params)
14
- Calculator.new(params, config: self.config).calculate
16
+ Calculator.new(params, config: config).calculate
15
17
  end
16
18
  end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ostruct'
1
4
  require 'money'
2
5
 
3
6
  module Commissioner
@@ -5,10 +8,77 @@ module Commissioner
5
8
  AmountUnknown = Class.new(StandardError)
6
9
  CommissionerArityInvalid = Class.new(StandardError)
7
10
 
8
- HELP_MESSAGE = 'You must provider either charged_amount (with charged_currency) or received_amount (with received_currency). If none or both are non-zero, the service cannot know how to handle this.'.freeze
11
+ class Operator
12
+ OPERATIONS = {
13
+ exchange: ->(op) { op.exchange },
14
+ commission: ->(op) { op.apply_commission(op.commission, :operation) },
15
+ exchange_commission: ->(op) { op.apply_commission(op.exchange_commission, :exchange) if op.to != op.from }
16
+ }.freeze
17
+
18
+ attr_reader :commission, :exchange_commission, :exchanger, :to, :from, :exchange_fee, :fee, :exchange_rate,
19
+ :amount
20
+
21
+ def initialize(params)
22
+ @amount = params[:amount]
23
+ @commission = params[:commission]
24
+ @exchange_commission = params[:exchange_commission]
25
+ @exchanger = params[:exchanger]
26
+ @rounding_mode = params[:rounding_mode]
27
+ @commission_action = params[:commission_action]
28
+ @from = params[:from_currency]
29
+ @to = params[:to_currency]
30
+ end
31
+
32
+ def apply_order(order)
33
+ order.each do |operation|
34
+ OPERATIONS[operation]&.call(self)
35
+ end
36
+ end
37
+
38
+ def apply_commission(commission, type)
39
+ return 0 unless commission
40
+
41
+ if @commission_action == :reduce
42
+ fee = round(@amount.to_f * commission / 100, @amount.currency.to_s)
43
+ @amount -= fee
44
+ else
45
+ fee = round(@amount.to_f * commission / (100 - commission), @amount.currency.to_s)
46
+ @amount += fee
47
+ end
48
+
49
+ case type
50
+ when :exchange
51
+ @exchange_fee = fee
52
+ else
53
+ @fee = fee
54
+ end
55
+ end
56
+
57
+ def round(decimal, currency)
58
+ Money.with_rounding_mode(@rounding_mode) do
59
+ Money.from_amount(decimal, currency)
60
+ end
61
+ end
62
+
63
+ def exchange
64
+ @amount, @exchange_rate = exchanger.call(from, to, @amount)
65
+ end
66
+ end
67
+
68
+ HELP_MESSAGE = 'You must provider either charged_amount (with charged_currency) '\
69
+ 'or received_amount (with received_currency). If none or both are '\
70
+ 'non-zero, the service cannot know how to handle this.'
71
+ DEFAULT_ORDER = %i[
72
+ commission
73
+ exchange
74
+ exchange_commission
75
+ ].freeze
76
+
9
77
  private_constant :HELP_MESSAGE
78
+ private_constant :DEFAULT_ORDER
79
+ private_constant :Operator
10
80
 
11
- def initialize(params, config:)
81
+ def initialize(params, config:, order: DEFAULT_ORDER)
12
82
  @charged_amount = guess_amount(params[:charged_amount], params[:charged_currency])
13
83
  @received_amount = guess_amount(params[:received_amount], params[:received_currency])
14
84
 
@@ -16,10 +86,11 @@ module Commissioner
16
86
  @commission = params[:commission] || 0
17
87
 
18
88
  unless config.exchanger.is_a?(Proc) && config.exchanger.arity == 3
19
- raise CommissionerArityInvalid.new("'exchanger' setting must be a lambda with arity of 3")
89
+ raise CommissionerArityInvalid, "'exchanger' setting must be a lambda with arity of 3"
20
90
  end
21
91
 
22
92
  @exchanger = config.exchanger
93
+ @order = order
23
94
  @rounding_mode =
24
95
  case config.rounding_mode
25
96
  when :up
@@ -34,53 +105,69 @@ module Commissioner
34
105
  end
35
106
 
36
107
  def calculate
37
- if !empty?(@received_amount) && empty?(@charged_amount)
38
- @charged_amount = calculate_for_received
39
- elsif !empty?(@charged_amount) && empty?(@received_amount)
40
- @received_amount = calculate_for_charged
41
- else
42
- raise AmountUnknown.new(HELP_MESSAGE)
43
- end
44
-
45
- OpenStruct.new(
108
+ @result = OpenStruct.new(
46
109
  received_amount: @received_amount,
47
110
  charged_amount: @charged_amount,
48
- fee: @fee,
49
- exchange_fee: @exchange_fee,
50
- exchange_rate: @exchange_rate
111
+ fee: 0,
112
+ exchange_fee: 0,
113
+ exchange_rate: 0
51
114
  )
115
+
116
+ if !empty?(@charged_amount) && @received_amount.zero?
117
+ calculate_for_charged
118
+ elsif !empty?(@received_amount) && @charged_amount.zero?
119
+ calculate_for_received
120
+ else
121
+ raise AmountUnknown, HELP_MESSAGE
122
+ end
123
+
124
+ @result
52
125
  end
53
126
 
54
127
  private
55
128
 
56
- attr_reader :exchange_commission, :commission, :exchanger
57
-
58
129
  def empty?(amount)
59
130
  amount.nil? || amount.zero?
60
131
  end
61
132
 
62
- def calculate_for_received
63
- amount = @received_amount
64
-
65
- amount, @exchange_fee = add_commission(amount, exchange_commission)
66
-
67
- amount, @exchange_rate = exchange(amount) if @charged_amount.currency != @received_amount.currency
133
+ def calculate_for_charged
134
+ operator = Operator.new(
135
+ from_currency: @charged_amount.currency.to_s,
136
+ to_currency: @received_amount.currency.to_s,
137
+ amount: @charged_amount,
138
+ commission: @commission,
139
+ exchange_commission: @exchange_commission,
140
+ exchanger: @exchanger,
141
+ rounding_mode: @rounding_mode,
142
+ commission_action: :reduce
143
+ )
68
144
 
69
- amount, @fee = add_commission(amount, commission)
145
+ operator.apply_order(@order)
70
146
 
71
- amount
147
+ @result.received_amount = operator.amount
148
+ @result.fee = operator.fee if operator.fee
149
+ @result.exchange_fee = operator.exchange_fee if operator.exchange_fee
150
+ @result.exchange_rate = operator.exchange_rate
72
151
  end
73
152
 
74
- def calculate_for_charged
75
- amount = @charged_amount
76
-
77
- amount, @fee = reduce_commission(amount, commission)
78
-
79
- amount, @exchange_rate = exchange(amount) if @charged_amount.currency != @received_amount.currency
153
+ def calculate_for_received
154
+ operator = Operator.new(
155
+ from_currency: @charged_amount.currency.to_s,
156
+ to_currency: @received_amount.currency.to_s,
157
+ amount: @received_amount,
158
+ commission: @commission,
159
+ exchange_commission: @exchange_commission,
160
+ exchanger: @exchanger,
161
+ rounding_mode: @rounding_mode,
162
+ commission_action: :add
163
+ )
80
164
 
81
- amount, @exchange_fee = reduce_commission(amount, exchange_commission)
165
+ operator.apply_order(@order.reverse)
82
166
 
83
- amount
167
+ @result.charged_amount = operator.amount
168
+ @result.fee = operator.fee if operator.fee
169
+ @result.exchange_fee = operator.exchange_fee if operator.exchange_fee
170
+ @result.exchange_rate = operator.exchange_rate
84
171
  end
85
172
 
86
173
  def guess_amount(amount, currency)
@@ -93,31 +180,5 @@ module Commissioner
93
180
  Money.new(0, currency) if currency.is_a?(String)
94
181
  end
95
182
  end
96
-
97
- def reduce_commission(amount, commission)
98
- return 0 unless commission
99
- fee = round(amount.to_f * commission / 100, amount.currency.to_s)
100
- amount -= fee
101
-
102
- [amount, fee]
103
- end
104
-
105
- def add_commission(amount, commission)
106
- return 0 unless commission
107
- fee = round(amount.to_f * commission / (100 - commission), amount.currency.to_s)
108
- amount += fee
109
-
110
- [amount, fee]
111
- end
112
-
113
- def round(decimal, currency)
114
- Money.with_rounding_mode(@rounding_mode) do
115
- Money.from_amount(decimal, currency)
116
- end
117
- end
118
-
119
- def exchange(amount)
120
- exchanger.call(@charged_amount.currency.to_s, @received_amount.currency.to_s, amount)
121
- end
122
183
  end
123
184
  end
@@ -1,16 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Commissioner
2
4
  module Mixin
3
- # TODO: Allow configuring order of operations
4
- # Order = ->(*order) { @@order = order }
5
+ Order = ->(*order) { @@order = order }
5
6
 
6
- # @@order = [
7
- # :commission,
8
- # :exchange,
9
- # :exchange_commission
10
- # ]
7
+ @@order = %i[
8
+ commission
9
+ exchange
10
+ exchange_commission
11
+ ]
11
12
 
12
13
  def calculate(params)
13
- Calculator.new(params, config: Commissioner.config).calculate
14
+ Calculator.new(params, config: Commissioner.config, order: @@order).calculate
14
15
  end
15
16
  end
16
17
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Commissioner
2
- VERSION = "0.1.2"
4
+ VERSION = '0.2.1'
3
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commissioner-guy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Valentine Kiselev
@@ -11,33 +11,33 @@ cert_chain: []
11
11
  date: 2020-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: dry-configurable
14
+ name: dry-auto_inject
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.11'
19
+ version: '0.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.11'
26
+ version: '0.6'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dry-auto_inject
28
+ name: dry-configurable
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.6'
33
+ version: '0.11'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.6'
40
+ version: '0.11'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: money
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.17'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 3.9.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 3.9.0
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.6.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.6.1
97
125
  description: A simple gem to calculate money based on provided amounts.
98
126
  email:
99
127
  - mrexox@outlook.com
@@ -103,6 +131,8 @@ extra_rdoc_files: []
103
131
  files:
104
132
  - ".gitignore"
105
133
  - ".rspec"
134
+ - ".rubocop.yml"
135
+ - ".rubocop_todo.yml"
106
136
  - ".ruby-version"
107
137
  - ".travis.yml"
108
138
  - Gemfile