Class: Factory::OverrideList
- Inherits:
-
Object
- Object
- Factory::OverrideList
- Defined in:
- lib/factory.rb
Overview
OverrideList is used to keep track of a classes various override settings.
Instance Attribute Summary collapse
-
#class_name ⇒ Object
readonly
:nodoc:.
-
#parent ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#add_inherited_override(sub_class) ⇒ Object
Called by Factory when a registered class is inherited from.
-
#add_override(name) ⇒ Object
Called by Factory when the user is manually overriding factory override sub-class defaults.
-
#get_override ⇒ Object
Calculates and returns the class name as string of the factory override for the class which this OverrideList is for.
-
#initialize(name) ⇒ OverrideList
constructor
A new instance of OverrideList.
-
#remove_override(name) ⇒ Object
Called by Factory when the user is manually overriding factory override sub-class defaults.
-
#reset_overrides ⇒ Object
Called during testing.
-
#to_s ⇒ Object
Returns a print friendly string which summarizes the factory override configuration.
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_name ⇒ Object (readonly)
:nodoc:
18 19 20 |
# File 'lib/factory.rb', line 18 def class_name @class_name end |
#parent ⇒ Object
: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_override ⇒ Object
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_overrides ⇒ Object
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_s ⇒ Object
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 |