Module: Zena::Use::Workflow::ClassMethods

Defined in:
lib/zena/use/workflow.rb

Constant Summary collapse

@@transitions =

FIXME: should use class inheritable attribute

[]

Instance Method Summary collapse

Instance Method Details

#add_transition(name, opts, &block) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/zena/use/workflow.rb', line 97

def add_transition(name, opts, &block)
  v = opts[:from]
  if v.kind_of?(Symbol)
    opts[:from] = [Zena::Status[v]]
  elsif v.kind_of?(Array)
    opts[:from] = v.map {|e| e.kind_of?(Symbol) ? Zena::Status[e] : e}
  elsif v.kind_of?(Fixnum)
    opts[:from] = [v]
  end

  v = opts[:to]
  if v.kind_of?(Symbol)
    opts[:to] = Zena::Status[v]
  end

  self.transitions << opts.merge(:name => name, :validate => block)
end

#transitionsObject



92
93
94
95
# File 'lib/zena/use/workflow.rb', line 92

def transitions
  @@transitions
  # something like this does not work: @@transitions[self] ||= []
end

#version_classObject

Default version class (should usually be overwritten) FIXME: remove !



117
118
119
# File 'lib/zena/use/workflow.rb', line 117

def version_class
  Version
end