Sha256: d12991c7aaedf9ef7e32173768742b8ed5072870ad065e5c9d77f200709b4a9d

Contents?: true

Size: 940 Bytes

Versions: 11

Compression:

Stored size: 940 Bytes

Contents

require 'genesis_ruby/errors/invalid_argument_error'
require 'bigdecimal'

module GenesisRuby
  module Utils
    module Money
      module Base
        # Base Conversion Strategy class
        class Strategy

          attr_accessor :amount, :currency, :currency_exponent

          # Class constructor
          def initialize(amount, currency, currency_exponent)
            @amount            = parse_amount(amount)
            @currency          = currency
            @currency_exponent = currency_exponent
          end

          # Convert Strategy method
          def convert
            raise NotImplementedError
          end

          protected

          # Validate and parse amount into BigDecimal
          def parse_amount(amount)
            BigDecimal(amount.to_s)
          rescue StandardError
            raise InvalidArgumentError, 'Invalid amount value given.'
          end

        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
genesis_ruby-0.2.0 lib/genesis_ruby/utils/money/base/strategy.rb
genesis_ruby-0.1.9 lib/genesis_ruby/utils/money/base/strategy.rb
genesis_ruby-0.1.8 lib/genesis_ruby/utils/money/base/strategy.rb
genesis_ruby-0.1.7 lib/genesis_ruby/utils/money/base/strategy.rb
genesis_ruby-0.1.6 lib/genesis_ruby/utils/money/base/strategy.rb
genesis_ruby-0.1.5 lib/genesis_ruby/utils/money/base/strategy.rb
genesis_ruby-0.1.4 lib/genesis_ruby/utils/money/base/strategy.rb
genesis_ruby-0.1.3 lib/genesis_ruby/utils/money/base/strategy.rb
genesis_ruby-0.1.2 lib/genesis_ruby/utils/money/base/strategy.rb
genesis_ruby-0.1.1 lib/genesis_ruby/utils/money/base/strategy.rb
genesis_ruby-0.1.0 lib/genesis_ruby/utils/money/base/strategy.rb