Class: Spree::Money

Inherits:
Object
  • Object
show all
Defined in:
lib/spree/money.rb

Class Attribute Summary collapse

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(amount, options = {}) ⇒ Money

Returns a new instance of Money.



21
22
23
24
25
# File 'lib/spree/money.rb', line 21

def initialize(amount, options = {})
  use_default_currency
  @money   = Monetize.parse([amount, (options[:currency] || Spree::Config[:currency])].join)
  @options = Spree::Money.default_formatting_rules.merge(options)
end

Class Attribute Details

.default_formatting_rulesObject

Returns the value of attribute default_formatting_rules.



9
10
11
# File 'lib/spree/money.rb', line 9

def default_formatting_rules
  @default_formatting_rules
end

Instance Attribute Details

#moneyObject (readonly)

Returns the value of attribute money.



18
19
20
# File 'lib/spree/money.rb', line 18

def money
  @money
end

Instance Method Details

#==(obj) ⇒ Object



63
64
65
# File 'lib/spree/money.rb', line 63

def ==(obj)
  money == obj.money
end

#amount_in_centsObject



27
28
29
# File 'lib/spree/money.rb', line 27

def amount_in_cents
  (cents / currency.subunit_to_unit.to_f * 100).round
end

#as_jsonObject



51
52
53
# File 'lib/spree/money.rb', line 51

def as_json(*)
  to_s
end

#decimal_markObject



55
56
57
# File 'lib/spree/money.rb', line 55

def decimal_mark
  options[:decimal_mark] || money.decimal_mark
end

#thousands_separatorObject



59
60
61
# File 'lib/spree/money.rb', line 59

def thousands_separator
  options[:thousands_separator] || money.thousands_separator
end

#to_html(opts = { html: true }) ⇒ Object

1) prevent blank, breaking spaces 2) prevent escaping of HTML character entities



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/spree/money.rb', line 37

def to_html(opts = { html: true })
  # html option is deprecated and we need to fallback to html_wrap
  opts[:html_wrap] = opts[:html]
  opts.delete(:html)

  output = money.format(options.merge(opts))
  if opts[:html_wrap]
    output.gsub!(/<\/?[^>]*>/, '') # we don't want wrap every element in span
    output = output.sub(' ', '&nbsp;').html_safe
  end

  output
end

#to_sObject



31
32
33
# File 'lib/spree/money.rb', line 31

def to_s
  money&.format(options)
end

#use_default_currencyObject



67
68
69
70
# File 'lib/spree/money.rb', line 67

def use_default_currency
  currency = Spree::Store.default.default_currency || Spree::Config[:currency]
  ::Money.default_currency = currency
end