Sha256: 380be70303e4fad451ebf302ef67b55998a023222eb4ea0c39fcfe31030f2235

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

# encoding: utf-8
require 'bigdecimal'

module BusinessCatalyst
  module CSV

    class CurrencyTransformer < Transformer
      BC_CURRENCY_REGEX = /\A\w+\/\d/.freeze

      def self.default_currency
        @default_currency || "US"
      end

      def self.default_currency=(currency)
        @default_currency = currency
      end

      attr_accessor :currency

      def initialize(input, currency = nil)
        @currency = currency || self.class.default_currency
        super(input)
      end

      def transform
        if input
          inputs = Array(input).map {|n| number_to_currency(n) }.compact
          if inputs.any?
            inputs.join(";")
          end
        end
      end

      def number_to_currency(input)
        if input
          input_s = input.kind_of?(BigDecimal) ? input.to_s('F') : input.to_s.strip
          if input_s != ""
            if is_bc_currency_string?(input_s)
              input_s
            else
              "#{currency}/#{input_s}"
            end
          end
        end
      end

      def is_bc_currency_string?(input)
        !!(input =~ BC_CURRENCY_REGEX)
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
business_catalyst-0.1.2 lib/business_catalyst/csv/transformers/currency_transformer.rb
business_catalyst-0.1.1 lib/business_catalyst/csv/transformers/currency_transformer.rb
business_catalyst-0.1.0 lib/business_catalyst/csv/transformers/currency_transformer.rb