Sha256: 58ec5b2d5d78ea78b447ee5dd8df4fc6cf0f8d7f7f79c1abfb23814d24ac46b5

Contents?: true

Size: 1.11 KB

Versions: 133

Compression:

Stored size: 1.11 KB

Contents

module Spree
  module DisplayMoney
    ##
    # Takes a list of methods that the base object wants to be able to use
    # to display with Spree::Money, and turns them into display_* methods.
    # Intended to help clean up some of the presentational logic that exists
    # at the model layer.
    #
    #
    # ==== Examples
    # Decorate a method, with the default option of using the base object's
    # currency
    #
    #     extend Spree::DisplayMoney
    #     money_methods :tax_amount, :price
    #
    # Decorate a method, but with some additional options
    #     extend Spree::DisplayMoney
    #     money_methods tax_amount: { currency: "CAD", no_cents: true }, :price
    def money_methods(*args)
      args.each do |money_method|
        money_method = { money_method => {} } unless money_method.is_a? Hash
        money_method.each do |method_name, opts|
          define_method("display_#{method_name}") do
            default_opts = respond_to?(:currency) ? { currency: currency } : {}
            Spree::Money.new(send(method_name), default_opts.merge(opts))
          end
        end
      end
    end
  end
end

Version data entries

133 entries across 133 versions & 2 rubygems

Version Path
spree_core-4.0.9 app/models/concerns/spree/display_money.rb
spree_core-4.1.15 app/models/concerns/spree/display_money.rb
spree_core-4.2.7 app/models/concerns/spree/display_money.rb
spree_core-4.2.6 app/models/concerns/spree/display_money.rb
spree_core-4.3.0.rc1 app/models/concerns/spree/display_money.rb
spree_core-4.2.5 app/models/concerns/spree/display_money.rb
spree_core-4.1.14 app/models/concerns/spree/display_money.rb
spree_core-4.0.8 app/models/concerns/spree/display_money.rb
spree_core-4.2.4 app/models/concerns/spree/display_money.rb
spree_core-3.7.14.1 app/models/concerns/spree/display_money.rb
spree_core-4.2.3.1 app/models/concerns/spree/display_money.rb
spree_core-4.1.13.1 app/models/concerns/spree/display_money.rb
spree_core-4.0.7.1 app/models/concerns/spree/display_money.rb
spree_core-4.2.3 app/models/concerns/spree/display_money.rb
spree_core-4.2.2 app/models/concerns/spree/display_money.rb
spree_core-4.2.1 app/models/concerns/spree/display_money.rb
spree_core-4.0.7 app/models/concerns/spree/display_money.rb
spree_core-3.7.14 app/models/concerns/spree/display_money.rb
spree_core-4.2.0 app/models/concerns/spree/display_money.rb
spree_core-4.2.0.rc5 app/models/concerns/spree/display_money.rb