Sha256: c3810617a2ea234f95e76a94743d3a811b4e91815ecaabbb981b7ad4361c7246

Contents?: true

Size: 1.18 KB

Versions: 5

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module Mensa
  class Cell
    include ActionView::Helpers::SanitizeHelper
    include ::ApplicationHelper
    include ActionView::Helpers::TagHelper
    include ActionView::Helpers::UrlHelper
    include Rails.application.routes.url_helpers

    attr_reader :column, :row

    def initialize(row:, column:)
      @row = row
      @column = column
    end

    def value
      @value ||= row.value(column)
    end

    def render(format)
      proc = column.config.dig(:render, format.to_sym)
      if proc
        row.table.original_view_context.instance_exec(row.record, &proc)
      else
        send("to_#{format}".to_sym)
      end
    end

    private

    def to_html
      case value
      when NilClass
        ''
      when TrueClass
        content_tag(:i, '', class: 'fa-regular fa-check')
      when FalseClass
        content_tag(:i, '', class: 'fa-regular fa-xmark')
      when Date
        respond_to?(:dt) ? dt(value) : value.strftime('%d.%m.%Y')
      when Time, DateTime
        respond_to?(:ln) ? ln(value) : value.strftime('%d-%m-%Y %H:%M:%S')
      else
        column.sanitize? ? sanitize(value.to_s) : value.to_s.html_safe
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mensa-0.1.15 app/tables/mensa/cell.rb
mensa-0.1.14 app/tables/mensa/cell.rb
mensa-0.1.13 app/tables/mensa/cell.rb
mensa-0.1.12 app/tables/mensa/cell.rb
mensa-0.1.10 app/tables/mensa/cell.rb