Sha256: bde2236fd99b597999c4dc3f378f3f02babc31876ecf7891c9bf636c84bf6364

Contents?: true

Size: 1.53 KB

Versions: 10

Compression:

Stored size: 1.53 KB

Contents

class N4j::Traversal
  PARAMETERS = [:order, :uniqueness, :return_filter, :prune_evaluator, :relationships, :max_depth]
  attr_accessor *PARAMETERS
  attr_accessor :start, :return_type
  
  def initialize(opts ={})
    opts.each_pair do |k,v|
      send "#{k}=", v if respond_to?("#{k}=")
    end
  end
  
  def return_type
    @return_type || 'node'
  end
  
  def outbound(type)
    self.relationships ||= []
    self.relationships << {'direction' => 'out', 'type' => type}
    self
  end
  
  def inbound(type)
    self.relationships ||= []
    self.relationships << {'direction' => 'in', 'type' => type}
    self
  end
  
  # {
  #   "order" : "breadth_first",
  #   "return_filter" : {
  #     "body" : "position.endNode().getProperty('name').toLowerCase().contains('t')",
  #     "language" : "javascript"
  #   },
  #   "prune_evaluator" : {
  #     "body" : "position.length() > 10",
  #     "language" : "javascript"
  #   },
  #   "uniqueness" : "node_global",
  #   "relationships" : [ {
  #     "direction" : "all",
  #     "type" : "knows"
  #   }, {
  #     "direction" : "all",
  #     "type" : "loves"
  #   } ],
  #   "max_depth" : 3
  # }
  
  def traversal
    # {"relationships" => [{'direction' => 'in', 'type' => 'is_a' }]}
    self.class::PARAMETERS.inject({}) do |sum, n|
      key = :"@#{n}"
      val = instance_variable_defined?(key) && instance_variable_get(key)
      sum[n] = val if val
      sum
    end
  end
  
  def go
    N4j.batch([{:to => "#{start}/traverse/#{return_type}", :method => 'POST', :body => traversal}])
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
n4j-0.0.1.7 lib/n4j/traversal.rb
n4j-0.0.1.6.3 lib/n4j/traversal.rb
n4j-0.0.1.6.1 lib/n4j/traversal.rb
n4j-0.0.1.6 lib/n4j/traversal.rb
n4j-0.0.1.5 lib/n4j/traversal.rb
n4j-0.0.1.4 lib/n4j/traversal.rb
n4j-0.0.1.3 lib/n4j/traversal.rb
n4j-0.0.1.2 lib/n4j/traversal.rb
n4j-0.0.1.1 lib/n4j/traversal.rb
n4j-0.0.1 lib/n4j/traversal.rb