Sha256: 0d4c8061b1c58de0e3d61f7688799c54dacacbf2487a88fb66c62ba431d8c68f

Contents?: true

Size: 969 Bytes

Versions: 11

Compression:

Stored size: 969 Bytes

Contents

class AASM::SupportingClasses::State
  attr_reader :name, :options

  def initialize(name, options={})
    @name = name
    update(options)
  end

  def ==(state)
    if state.is_a? Symbol
      name == state
    else
      name == state.name
    end
  end

  def call_action(action, record)
    action = @options[action]
    catch :halt_aasm_chain do
      action.is_a?(Array) ?
              action.each {|a| _call_action(a, record)} :
              _call_action(action, record)
    end
  end

  def display_name
    @display_name ||= name.to_s.gsub(/_/, ' ').capitalize
  end

  def for_select
    [display_name, name.to_s]
  end

  def update(options = {})
    if options.key?(:display) then
      @display_name = options.delete(:display)
    end
    @options = options
    self
  end

  private

  def _call_action(action, record)
    case action
      when Symbol, String
        record.send(action)
      when Proc
        action.call(record)
    end
  end

end

Version data entries

11 entries across 11 versions & 5 rubygems

Version Path
aasm-2.4.0 lib/aasm/state.rb
alexrevin-aasm_numerical-2.3.1 lib/alexrevin-aasm_numerical/state.rb
aasm-2.3.1 lib/aasm/state.rb
aasm-2.3.0 lib/aasm/state.rb
aasm-2.2.1 lib/aasm/state.rb
aasm-2.2.0 lib/aasm/state.rb
mylescarrick-aasm-2.1.5 lib/aasm/state.rb
fcoury-aasm-2.1.5 lib/aasm/state.rb
r38y-aasm-2.1.5 lib/aasm/state.rb
aasm-2.1.5 lib/aasm/state.rb
aasm-2.1.4 lib/aasm/state.rb