Sha256: 479a1defcccabb66abaf474653ac44789178df4f09c9bceceac8bcf7364e8545
Contents?: true
Size: 1003 Bytes
Versions: 27
Compression:
Stored size: 1003 Bytes
Contents
# frozen_string_literal: true module EacRailsUtils 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
27 entries across 27 versions & 1 rubygems