Sha256: 63c11af4f45f00eb5c51b86ca51207428ecf0cc0c5baf27ed97776001aa0ab12

Contents?: true

Size: 1.26 KB

Versions: 20

Compression:

Stored size: 1.26 KB

Contents

class BMC::Serializers::Base
  attr_reader :data, :options

  def initialize(data, options = {})
    @data    = data
    @options = options
  end

  def formatted_data
    data.map do |line|
      line.map { |value| self.class.format(value) }
    end
  end

  def render_inline
    raise NotImplementedError
  end

  def render_file(_file_path)
    raise NotImplementedError
  end

  class << self
    def decimals_precision
      @decimals_precision ||= 2
    end

    attr_writer :decimals_precision

    def format_integer(value)
      value
    end

    def format_decimal(value)
      value.to_f.round(decimals_precision) # Fix BigDecimal and 0.1 + 0.2
    end

    def format_boolean(value)
      I18n.t(value.to_s)
    end

    def format_date_or_time(value)
      value
    end

    def format_default(value)
      value.to_s
    end

    def formatter_for(value)
      return :integer if value.is_a?(Integer)
      return :decimal if value.is_a?(Numeric)
      return :boolean if value.is_a?(TrueClass) || value.is_a?(FalseClass)
      return :date_or_time if value.is_a?(Date) || value.is_a?(Time)
      return :default
    end

    def format(value)
      formatter = "format_" + formatter_for(value).to_s
      public_send(formatter, value)
    end
  end # class << self
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
bmc-1.6.2 app/serializers/bmc/serializers/base.rb
bmc-1.6.1 app/serializers/bmc/serializers/base.rb
bmc-1.6.0 app/serializers/bmc/serializers/base.rb
bmc-1.5.1 app/serializers/bmc/serializers/base.rb
bmc-1.5.0 app/serializers/bmc/serializers/base.rb
bmc-1.4.3 app/serializers/bmc/serializers/base.rb
bmc-1.4.2 app/serializers/bmc/serializers/base.rb
bmc-1.4.1 app/serializers/bmc/serializers/base.rb
bmc-1.4.0 app/serializers/bmc/serializers/base.rb
bmc-1.3.5 app/serializers/bmc/serializers/base.rb
bmc-1.3.4 app/serializers/bmc/serializers/base.rb
bmc-1.3.3 app/serializers/bmc/serializers/base.rb
bmc-1.3.2 app/serializers/bmc/serializers/base.rb
bmc-1.3.1 app/serializers/bmc/serializers/base.rb
bmc-1.3.0 app/serializers/bmc/serializers/base.rb
bmc-1.2.1 app/serializers/bmc/serializers/base.rb
bmc-1.2.0 app/serializers/bmc/serializers/base.rb
bmc-1.1.0 app/serializers/bmc/serializers/base.rb
bmc-1.0.1 app/serializers/bmc/serializers/base.rb
bmc-1.0.0 app/serializers/bmc/serializers/base.rb