Sha256: fa27b4e5f16e50bad381a7c4849d2968d0a5146ec0fc0b5a9d949510c6dca30a

Contents?: true

Size: 912 Bytes

Versions: 10

Compression:

Stored size: 912 Bytes

Contents

# frozen_string_literal: true

module Mensa
  class Row
    attr_reader :table, :view_context, :record

    def initialize(table, record)
      @table = table
      @record = record
    end

    def value(column)
      if column.attribute && record.respond_to?(column.attribute)
        record.public_send(column.attribute)
      elsif column.method && record.respond_to?(column.method)
        record.public_send(column.method)
      elsif record.respond_to?(column.name)
        record.public_send(column.name)
      elsif record.respond_to?(:[])
        record[column.name]
      else
        "-"
      end
    end

    def link_attributes
      return {} unless link

      { href: link, data: { controller: "satis-link",  action: "click->satis-link#follow tap->satis-link#follow" } }
    end

    def link
      table.original_view_context.instance_exec(record, &table.link) if table.link
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
mensa-0.1.15 app/tables/mensa/row.rb
mensa-0.1.14 app/tables/mensa/row.rb
mensa-0.1.13 app/tables/mensa/row.rb
mensa-0.1.12 app/tables/mensa/row.rb
mensa-0.1.10 app/tables/mensa/row.rb
mensa-0.1.9 app/tables/mensa/row.rb
mensa-0.1.7 app/tables/mensa/row.rb
mensa-0.1.6 app/tables/mensa/row.rb
mensa-0.1.4 app/tables/mensa/row.rb
mensa-0.1.3 app/tables/mensa/row.rb