Sha256: 616eeccaeceaad12178819c59a42b035f0ad8d0137ff3558320a2881cf7df136

Contents?: true

Size: 899 Bytes

Versions: 11

Compression:

Stored size: 899 Bytes

Contents

require 'genesis_ruby/errors/invalid_argument_error'

module GenesisRuby
  module Utils
    module Money
      # Money Helper
      class Format

        attr_accessor :strategy

        def initialize(strategy)
          @strategy = strategy
        end

        # Execute Convert Strategy
        def convert
          unless valid_amount_exponent?
            raise GenesisRuby::InvalidArgumentError, 'Currency exponent do not match the given amount'
          end

          strategy.convert
        end

        # Validate the given amount against the defined currency exponent
        def valid_amount_exponent?
          amount_sign, amount_digits, amount_base, amount_exponent = strategy.amount.split # rubocop:disable Lint/UselessAssignment

          !amount_sign.negative? && (amount_digits.length - amount_exponent) <= strategy.currency_exponent
        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/format.rb
genesis_ruby-0.1.9 lib/genesis_ruby/utils/money/format.rb
genesis_ruby-0.1.8 lib/genesis_ruby/utils/money/format.rb
genesis_ruby-0.1.7 lib/genesis_ruby/utils/money/format.rb
genesis_ruby-0.1.6 lib/genesis_ruby/utils/money/format.rb
genesis_ruby-0.1.5 lib/genesis_ruby/utils/money/format.rb
genesis_ruby-0.1.4 lib/genesis_ruby/utils/money/format.rb
genesis_ruby-0.1.3 lib/genesis_ruby/utils/money/format.rb
genesis_ruby-0.1.2 lib/genesis_ruby/utils/money/format.rb
genesis_ruby-0.1.1 lib/genesis_ruby/utils/money/format.rb
genesis_ruby-0.1.0 lib/genesis_ruby/utils/money/format.rb