Sha256: 0448d48409998ffee98a49f5eee6ebe3e7ef57e5dff40d2e03b05a0e54c2d63f
Contents?: true
Size: 1.13 KB
Versions: 3
Compression:
Stored size: 1.13 KB
Contents
# frozen_string_literal: true 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: } : {} Spree::Money.new(send(method_name), default_opts.merge(opts)) end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
solidus_core-4.4.2 | app/models/concerns/spree/display_money.rb |
solidus_core-4.4.1 | app/models/concerns/spree/display_money.rb |
solidus_core-4.4.0 | app/models/concerns/spree/display_money.rb |