Class: Factory::OverrideList

Inherits:
Object
  • Object
show all
Defined in:
lib/factory.rb

Overview

OverrideList is used to keep track of a classes various override settings.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ OverrideList

Returns a new instance of OverrideList.



20
21
22
23
24
25
26
# File 'lib/factory.rb', line 20

def initialize name
	@class_name = name
	@parent = nil
	@sub_class_overrides = []
	@override_disables = []
	@manual_overrides =[]
end

Instance Attribute Details

#class_nameObject (readonly)

:nodoc:



18
19
20
# File 'lib/factory.rb', line 18

def class_name
  @class_name
end

#parentObject

:nodoc:



18
19
20
# File 'lib/factory.rb', line 18

def parent
  @parent
end

Instance Method Details

#add_inherited_override(sub_class) ⇒ Object

Called by Factory when a registered class is inherited from.



37
38
39
# File 'lib/factory.rb', line 37

def add_inherited_override sub_class
	@sub_class_overrides << sub_class
end

#add_override(name) ⇒ Object

Called by Factory when the user is manually overriding factory override sub-class defaults.



43
44
45
46
# File 'lib/factory.rb', line 43

def add_override name
	@manual_overrides << name
	@override_disables.delete name
end

#get_overrideObject

Calculates and returns the class name as string of the factory override for the class which this OverrideList is for. Manual and global overrides take presedence over automatic overrides via inheritance.



57
58
59
60
61
62
63
64
65
# File 'lib/factory.rb', line 57

def get_override
	overrides = @sub_class_overrides + @manual_overrides
	while !overrides.empty?
		override = overrides.pop
		return override unless @override_disables.include? override or 
										Factory.global_override_disables.include? override
	end
	return @class_name
end

#remove_override(name) ⇒ Object

Called by Factory when the user is manually overriding factory override sub-class defaults.



50
51
52
# File 'lib/factory.rb', line 50

def remove_override name
	@override_disables << name
end

#reset_overridesObject

Called during testing.



68
69
70
71
# File 'lib/factory.rb', line 68

def reset_overrides #:nodoc:
	@manual_overrides.clear
	@override_disables.clear
end

#to_sObject

Returns a print friendly string which summarizes the factory override configuration.



75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/factory.rb', line 75

def to_s
	<<-TXT
Factory Class: #{class_name}
Parent:                   #{parent.nil? ? 'Not in Factory' : parent}
Sub-class Overrides:      #{@sub_class_overrides.empty? ?
								'None' : @sub_class_overrides.join(', ')}
Manual Overrides:         #{@manual_overrides.empty? ?
										'None' : @manual_overrides.join(', ')}
Manual Override Disables: #{@override_disables.empty? ? 
										'None' : @override_disables.join(', ')}
Factory Override:         #{get_override}
	TXT
end