class CommandList

Public Class Methods

new() click to toggle source
# File libs/command_tree.rb, line 533
def initialize
  @cmd_tree={}
end

Public Instance Methods

find_and_parse(str) click to toggle source
# File libs/command_tree.rb, line 574
  def find_and_parse(str)

    tokens=CommandTokenizer.new(str)

    token_items=tokens.length

    cur_node=@cmd_tree
    pos=tokens.walk(0)

    while !tokens.end?(pos)
      item=tokens[pos].value
      break if cur_node[item].nil?
      cur_node=cur_node[item]
      pos=tokens.walk(pos+1)
    end

    #tokens.each do |item|
    #  if item.empty? || !item.scan(/^\s*$/).empty?
    #    count+=1
    #  else
    #    break if cur_node[item].nil?
    #    count+=1
    #    cur_node=cur_node[item]
    #  end
    #end

    raise InvalidCommand.new(str) if cur_node.nil? || !cur_node[:node]

    cmd=cur_node[:node]
    #params=str_array[count..str_array.length].join.strip

    debug(6,:msg=>"Tokens", :var=>tokens)
    debug(6,:msg=>"Pos", :var=>pos)
#    debug(6,:msg=>"Parsed", :var=>tokens.parse)
    params = tokens.drop(pos+1).join

    debug(6,:msg=>"Parameters", :var=>params)

    Cmd.new(cmd,params)
  end
get(path) click to toggle source
# File libs/command_tree.rb, line 558
def get(path)
  path=setup_path(path)

  cur_node=@cmd_tree
  count=0

  path.collect do |item|
    break if cur_node[item].nil?
    count+=1

    cur_node=cur_node[item]
  end

  cmd=cur_node.nil? ? nil : cur_node[:node]
end
get_command_list(tree=nil) click to toggle source
# File libs/command_tree.rb, line 615
def get_command_list(tree=nil)
  def get_subtree(tree)
    tmp=tree.dup
    path=nil
    if !tmp[:node].nil?
      path=tree[:node].path.join(" ")
      tmp.delete(:node)
    end
    tree=tmp

    if tree.empty?
      return path if !path.nil?
      return nil
    end
    results=tree.keys.sort.map {|key|
      get_subtree(tree[key])
    }
    [path,results]
  end

  get_subtree(@cmd_tree).flatten.compact.sort
end
get_subtree(tree) click to toggle source
# File libs/command_tree.rb, line 616
def get_subtree(tree)
  tmp=tree.dup
  path=nil
  if !tmp[:node].nil?
    path=tree[:node].path.join(" ")
    tmp.delete(:node)
  end
  tree=tmp

  if tree.empty?
    return path if !path.nil?
    return nil
  end
  results=tree.keys.sort.map {|key|
    get_subtree(tree[key])
  }
  [path,results]
end
insert(insert_path, cmd_obj) click to toggle source
# File libs/command_tree.rb, line 537
def insert(insert_path, cmd_obj)
  raise "Insert_path must be an array" if insert_path.class!=Array
  tree_node=@cmd_tree
  path_length=insert_path.length-1
  insert_path.each_index do |index|
    if tree_node[insert_path[index]].nil?
      if index<path_length
        tree_node[insert_path[index]]={}
        tree_node=tree_node[insert_path[index]]
      else
        tree_node[insert_path[index]]={:node=>cmd_obj}
      end
    else
      tree_node=tree_node[insert_path[index]]
    end
  end

  (0..(cmd_obj.alias_total-1)).each {|i|
    insert(cmd_obj.aliases[i],cmd_obj.generate_alias(i))} if cmd_obj.alias_total>0
end

Private Instance Methods

setup_path(path) click to toggle source
# File libs/command_tree.rb, line 640
def setup_path(path)
  if path.class==Array
    path
  elsif path.class==String
    path.split2
  else
    raise "Path must be Array or string"
  end
end