Sha256: 69462474ce859de2906ae167f8e8cade4abf5bbddefee362bb707432c3140b4d

Contents?: true

Size: 1.29 KB

Versions: 3

Compression:

Stored size: 1.29 KB

Contents

module Trestle
  module FormatHelper
    def format_value(value, options={})
      if options.key?(:format)
        format_value_from_options(value, options)
      else
        autoformat_value(value, options)
      end
    end

    def format_value_from_options(value, options={})
      case options[:format]
      when :currency
        number_to_currency(value)
      when :tags
        safe_join(value.map { |tag| content_tag(:span, tag, class: "tag") })
      else
        value
      end
    end

    def autoformat_value(value, options={})
      case value
      when Array
        content_tag(:ol, safe_join(value.map { |v| content_tag(:li, autoformat_value(v, options)) }, "\n"))
      when Time, DateTime
        timestamp(value)
      when Date
        datestamp(value)
      when TrueClass, FalseClass
        status_tag(icon("fa fa-check"), :success) if value
      when NilClass
        text = options.key?(:blank) ? options[:blank] : I18n.t("admin.format.blank")
        content_tag(:span, text, class: "blank")
      when String
        if value.html_safe? || options[:truncate] == false
          value
        else
          truncate(value, options[:truncate] || {})
        end
      when ->(value) { value.respond_to?(:id) }
        display(value)
      else
        value
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
trestle-0.8.6 app/helpers/trestle/format_helper.rb
trestle-0.8.5 app/helpers/trestle/format_helper.rb
trestle-0.8.4 app/helpers/trestle/format_helper.rb