Sha256: eb0e9d90262f64d8f2211d31d44030340d237c312048739b6809128888d6f25c

Contents?: true

Size: 1.15 KB

Versions: 20

Compression:

Stored size: 1.15 KB

Contents

module Volt
  module StateManager
    def state_for(state_name)
      ivar_name = :"@#{state_name}"

      # Depend on the dep
      state_dep_for(state_name).depend

      instance_variable_get(ivar_name)
    end

    # Called from the QueryListener when the data is loaded
    def change_state_to(state_name, new_state, trigger=true)
      # use an instance variable for the state storage
      ivar_name = :"@#{state_name}"

      old_state = instance_variable_get(ivar_name)
      instance_variable_set(ivar_name, new_state)

      # Trigger changed on the 'state' method
      if old_state != new_state && trigger
        dep = state_dep_for(state_name, false)
        dep.changed! if dep
      end
    end

    private
    # Get a state ivar for state_name
    # @params [String] the name of the state variable
    # @params [Boolean] if true, one will be created if it does not exist
    def state_dep_for(state_name, create=true)
      dep_ivar_name = :"@#{state_name}_dep"
      dep = instance_variable_get(dep_ivar_name)
      if !dep && create
        dep = Dependency.new
        instance_variable_set(dep_ivar_name, dep)
      end

      dep
    end

  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
volt-0.9.1 lib/volt/models/state_manager.rb
volt-0.9.1.pre5 lib/volt/models/state_manager.rb
volt-0.9.1.pre4 lib/volt/models/state_manager.rb
volt-0.9.1.pre3 lib/volt/models/state_manager.rb
volt-0.9.1.pre2 lib/volt/models/state_manager.rb
volt-0.9.1.pre1 lib/volt/models/state_manager.rb
volt-0.9.0 lib/volt/models/state_manager.rb
volt-0.9.0.pre7 lib/volt/models/state_manager.rb
volt-0.9.0.pre6 lib/volt/models/state_manager.rb
volt-0.9.0.pre5 lib/volt/models/state_manager.rb
volt-0.9.0.pre4 lib/volt/models/state_manager.rb
volt-0.9.0.pre3 lib/volt/models/state_manager.rb
volt-0.9.0.pre2 lib/volt/models/state_manager.rb
volt-0.9.0.pre1 lib/volt/models/state_manager.rb
volt-0.8.27.beta9 lib/volt/models/state_manager.rb
volt-0.8.27.beta8 lib/volt/models/state_manager.rb
volt-0.8.27.beta7 lib/volt/models/state_manager.rb
volt-0.8.27.beta6 lib/volt/models/state_manager.rb
volt-0.8.27.beta5 lib/volt/models/state_manager.rb
volt-0.8.27.beta4 lib/volt/models/state_manager.rb