Class: MTrack::State

Inherits:
Object
  • Object
show all
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

Constructor Details

#initializeState

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