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.



16
17
18
19
20
# File 'lib/mtrack/state.rb', line 16

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.



29
30
31
# File 'lib/mtrack/state.rb', line 29

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.



40
41
42
43
# File 'lib/mtrack/state.rb', line 40

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.



52
53
54
55
# File 'lib/mtrack/state.rb', line 52

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.



64
65
66
67
# File 'lib/mtrack/state.rb', line 64

def delete_tracked(name)
  groups.each {|k, 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.



76
77
78
79
# File 'lib/mtrack/state.rb', line 76

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.



86
87
88
89
90
# File 'lib/mtrack/state.rb', line 86

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