Class: MTrack::State
- Inherits:
-
Object
- Object
- MTrack::State
- Defined in:
- lib/mtrack/state.rb,
lib/mtrack/state/group.rb
Overview
Holds the internal state of tracked methods on Modules and Classes.
Defined Under Namespace
Classes: Group
Instance Method Summary collapse
-
#[](group_name) ⇒ Object
call-seq: state => group.
-
#add_super_state(state) ⇒ Object
call-seq: add_super_state(state) => state.
-
#add_undefined(name) ⇒ Object
call-seq: add_undefined(name) => name.
-
#delete_tracked(name) ⇒ Object
call-seq: delete_tracked(name) => name.
-
#delete_undefined(name) ⇒ Object
call-seq: delete_undefined(name) => name.
-
#initialize ⇒ State
constructor
call-seq: new() => new_state.
-
#tracked(group_name = nil) ⇒ Object
call-seq: tracked(group_name = nil) => set.
Constructor Details
#initialize ⇒ State
call-seq:
new() => new_state
Creates a new State instance.
14 15 16 17 18 |
# File 'lib/mtrack/state.rb', line 14 def initialize self.groups = {} self.super_states = Set.new self.undefined = Set.new end |
Instance Method Details
#[](group_name) ⇒ Object
call-seq:
state[group_name] => group
Accepts a group_name passed as a parameter.
Returns an existing or a new group associated with group_name.
27 28 29 |
# File 'lib/mtrack/state.rb', line 27 def [](group_name) groups[group_name] ||= Group.new end |
#add_super_state(state) ⇒ Object
call-seq:
add_super_state(state) => state
Adds a new state to the #super_states set.
Returns passed state.
38 39 40 41 |
# File 'lib/mtrack/state.rb', line 38 def add_super_state(state) super_states.add state state end |
#add_undefined(name) ⇒ Object
call-seq:
add_undefined(name) => name
Adds name to the #undefined methods set.
Returns passed name.
50 51 52 53 |
# File 'lib/mtrack/state.rb', line 50 def add_undefined(name) undefined.add name name end |
#delete_tracked(name) ⇒ Object
call-seq:
delete_tracked(name) => name
Removes method name from all #groups.
Returns passed name.
62 63 64 65 |
# File 'lib/mtrack/state.rb', line 62 def delete_tracked(name) groups.values.each {|v| v.delete_tracked name } name end |
#delete_undefined(name) ⇒ Object
call-seq:
delete_undefined(name) => name
Removes name from the #undefined methods set.
Returns passed name.
74 75 76 77 |
# File 'lib/mtrack/state.rb', line 74 def delete_undefined(name) undefined.delete name name end |
#tracked(group_name = nil) ⇒ Object
call-seq:
tracked(group_name = nil) => set
Returns a set containing the currently tracked methods for a group_name.
84 85 86 87 88 |
# File 'lib/mtrack/state.rb', line 84 def tracked(group_name = nil) ret_val = merge_super_states group_name ret_val.merge groups[group_name].tracked unless groups[group_name].nil? ret_val.subtract undefined end |