Module Opensteam::StateLogic::Mod::ClassMethods
In: lib/opensteam/state_logic.rb

Methods

Public Class methods

[Source]

    # File lib/opensteam/state_logic.rb, line 71
71:               def available_states
72:                 self.included_modules.select { |s| 
73:                   s.ancestors.include?( Opensteam::StateLogic::Mod ) }.reject { |s| 
74:                   s == Opensteam::StateLogic::Mod }
75:               end

Public Instance methods

included method called when the state-module is included into the receiver-class (like Order, Shipment, Invoice)

for each instance-method of the state-module, it creates an alias (in the receiver-klass) and delegates it to the corresponding state-module (based on receiver.state -> StatePattern) through the fire_event method.

[Source]

    # File lib/opensteam/state_logic.rb, line 56
56:         def included(receiver)
57:           self.instance_methods(false).each do |m|
58:             
59:             receiver.class_eval do
60:               define_method(m) { |*args| fire_event( m, *args ) }
61:             end
62:             
63:           end
64:           
65:           state_name = self.to_s.demodulize.downcase
66:           receiver.class_eval do
67:             define_method("#{state_name}?") { self.state == state_name }
68:             named_scope state_name, :conditions => ["#{self.table_name}.state = ?", state_name ]
69:             
70:             class << self ;
71:               def available_states
72:                 self.included_modules.select { |s| 
73:                   s.ancestors.include?( Opensteam::StateLogic::Mod ) }.reject { |s| 
74:                   s == Opensteam::StateLogic::Mod }
75:               end
76:             end
77:           end
78:         
79:         end

[Source]

    # File lib/opensteam/state_logic.rb, line 38
38:         def name ; self.to_s.demodulize.downcase.to_sym ; end

[Source]

    # File lib/opensteam/state_logic.rb, line 40
40:         def respond_to?( method )
41:           self.protected_instance_methods.include?( method )
42:         end

[Source]

    # File lib/opensteam/state_logic.rb, line 44
44:         def state_module? ; true ; end

[Validate]