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