module Agama::Keyify
Public Class Methods
edge(edge)
click to toggle source
# File lib/agama/keyify.rb, line 10 def self.edge(edge) from = self.node(edge[:from]) type = edge[:type] || Config::DEFAULT_TYPE outgoing, incoming = if edge[:directed] then ["O", "I"] else ["N", "N"] end to = self.node(edge[:to]) key = [from, type, outgoing, to].join(Config::EDGE_DELIMITOR) reverse_key = [to, type, incoming, from].join(Config::EDGE_DELIMITOR) [key, reverse_key] end
node(node)
click to toggle source
# File lib/agama/keyify.rb, line 5 def self.node(node) type = node[:type] || Config::DEFAULT_TYPE [type, node[:name]].join(Config::NODE_DELIMITOR) end
parse(key)
click to toggle source
# File lib/agama/keyify.rb, line 49 def self.parse(key) from_key, edge_type, direction, to_key = key.split(Config::EDGE_DELIMITOR) type, name = to_key.split(Config::NODE_DELIMITOR) directed = true directed = false if (direction == "N") [{:type => type, :name => name}, edge_type, direction, directed] end
range(params)
click to toggle source
# File lib/agama/keyify.rb, line 27 def self.range(params) from = self.node(params[:from]) if params[:from] type = params[:edge_type] if type dir = params[:direction] if dir to_type = params[:to_type] if to_type [from, type, dir, to_type].join(Config::EDGE_DELIMITOR) else [from, type, dir, nil].join(Config::EDGE_DELIMITOR) end else [from, type, nil].join(Config::EDGE_DELIMITOR) end else [from, nil].join(Config::EDGE_DELIMITOR) end end
subkey?(subkey, key)
click to toggle source
# File lib/agama/keyify.rb, line 57 def self.subkey?(subkey, key) key [0, subkey.length] == subkey end