class Nerdinator::Session

Attributes

tree[RW]

Public Instance Methods

add(session_query, tree = @tree) click to toggle source
# File lib/nerdinator/session.rb, line 17
def add(session_query, tree = @tree)
  tree[session_query.first] ||= {}
  if session_query.length > 1
    session = session_query.shift
    add(session_query, tree[session])
  end
end
leaves(session_query, tree = @tree) click to toggle source
# File lib/nerdinator/session.rb, line 35
def leaves(session_query, tree = @tree)
  if session_query.length.zero?
    tree.inject([]) do |acc, (session, subtree)|
      sub_leaves = leaves([], subtree)
      if sub_leaves.empty?
        acc << session
      else
        acc += sub_leaves
      end
    end
  else
    session = session_query.shift
    return [session] if tree[session].empty?
    leaves(session_query, tree[session])
  end
end
list(tree = @tree, spacing = '') click to toggle source
# File lib/nerdinator/session.rb, line 6
def list(tree = @tree, spacing = '')
  tree.to_a.each do |session, subtree|
    if subtree.keys.length.zero?
      puts "#{spacing}#{session}"
    else
      puts "#{spacing}#{session}:"
      list(subtree, "#{spacing}  ")
    end
  end
end
remove(session_query, tree = @tree) click to toggle source
# File lib/nerdinator/session.rb, line 25
def remove(session_query, tree = @tree)
  if session_query.length > 1
    session = session_query.shift
    remove(session_query, tree[session])
    tree.delete(session) if tree[session].keys.length.zero?
  else
    tree.delete(session_query.first)
  end
end