Sha256: 53b7d746bbfa3b389fc2bdcc8f7bf802c08cdd35b2f843e29e44d099c11a4688
Contents?: true
Size: 993 Bytes
Versions: 4
Compression:
Stored size: 993 Bytes
Contents
# frozen_string_literal: true module Eac module DataTableHelper class Column EMPTY_VALUE = '-' attr_reader :label def initialize(label, path, block) @label = label @path = path.to_s.split('.') @block = block end def record_value(record) v = Node.new(record, @path).value if v.present? @block ? @block.call(v) : v else EMPTY_VALUE end end private def node_value(node, subpath) return node if subpath.empty? end class Node def initialize(node, path) @node = node @path = path end def value return @node if @node.nil? || @path.empty? subpath = @path.dup n = subpath.shift return Node.new(@node.send(n), subpath).value if @node.respond_to?(n) raise "Instance of #{@node.class} does not respond to #{n}" end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems