class Etcd::Completion

Attributes

client[R]

Public Class Methods

new(opts={}) click to toggle source
# File lib/etcd-completion.rb, line 18
def initialize(opts={})
  @client = opts[:client] || Etcd.client(opts)
end

Public Instance Methods

filter(nodes, prefix) click to toggle source
# File lib/etcd-completion.rb, line 35
def filter(nodes, prefix) 
  nodes.select do |n|
    n.key.start_with?(prefix)
  end
end
matches(prefix) click to toggle source
# File lib/etcd-completion.rb, line 41
def matches(prefix)
  node = client.get(node_name(prefix)).node
  nodes = [node] + node.children
  nodes = filter(nodes, prefix)

  if nodes.size == 1  
    if nodes[0].directory?
      nodes += client.get(nodes[0].key).node.children
    end
  end

  nodes
end
node_name(prefix) click to toggle source
# File lib/etcd-completion.rb, line 22
def node_name(prefix)
  if (prefix == '/')
    '/' 
  else
    index = prefix.rindex('/')
    if index.nil?
      '/' 
    else
      prefix[0..index]
    end
  end
end