Class: Nerdinator::Session
- Inherits:
-
Object
- Object
- Nerdinator::Session
- Includes:
- Singleton
- Defined in:
- lib/nerdinator/session.rb
Instance Attribute Summary collapse
-
#tree ⇒ Object
Returns the value of attribute tree.
Instance Method Summary collapse
- #add(session_query, tree = @tree) ⇒ Object
- #leaves(session_query, tree = @tree) ⇒ Object
- #list(tree = @tree, spacing = '') ⇒ Object
- #remove(session_query, tree = @tree) ⇒ Object
Instance Attribute Details
#tree ⇒ Object
Returns the value of attribute tree.
4 5 6 |
# File 'lib/nerdinator/session.rb', line 4 def tree @tree end |
Instance Method Details
#add(session_query, tree = @tree) ⇒ Object
17 18 19 20 21 22 23 |
# 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) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# 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 = '') ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# 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) ⇒ Object
25 26 27 28 29 30 31 32 33 |
# 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 |