Sha256: d20e7f5e6086a57e11b0e4df5dbae22d48f23212ebdc95545144648c78d848e2

Contents?: true

Size: 685 Bytes

Versions: 10

Compression:

Stored size: 685 Bytes

Contents

module Arel
  module Enhance
    class Path
      attr_reader :nodes

      def initialize(nodes = [])
        @nodes = nodes
      end

      def append(path_node)
        Path.new(nodes + [path_node])
      end

      def dig_send(object)
        selected_object = object
        nodes.each do |path_node|
          selected_object = selected_object.send(*path_node.method)
        end
        selected_object
      end

      def to_a
        nodes.map(&:value)
      end

      def current
        nodes.last
      end

      def inspect
        nodes.inspect
        string = '['
        string << nodes.map(&:inspect).join(', ')
        string << ']'
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
arel_toolkit-0.4.9 lib/arel/enhance/path.rb
arel_toolkit-0.4.8 lib/arel/enhance/path.rb
arel_toolkit-0.4.7 lib/arel/enhance/path.rb
arel_toolkit-0.4.6 lib/arel/enhance/path.rb
arel_toolkit-0.4.5 lib/arel/enhance/path.rb
arel_toolkit-0.4.4 lib/arel/enhance/path.rb
arel_toolkit-0.4.3 lib/arel/enhance/path.rb
arel_toolkit-0.4.2 lib/arel/enhance/path.rb
arel_toolkit-0.4.1 lib/arel/enhance/path.rb
arel_toolkit-0.4.0 lib/arel/enhance/path.rb