Module: Wesm
- Defined in:
- lib/wesm/wesm.rb,
lib/wesm/errors.rb,
lib/wesm/version.rb,
lib/wesm/transition.rb,
lib/wesm/helpers/transitions_helper.rb
Defined Under Namespace
Modules: Helpers
Classes: AccessViolationError, BaseError, Transition, TransitionRequirementError, UnexpectedTransitionError
Constant Summary
collapse
- VERSION =
'0.1.8.8'
Instance Method Summary
collapse
Instance Method Details
30
31
32
33
34
|
# File 'lib/wesm/wesm.rb', line 30
def perform_transition(object, to_state, actor, *)
transition = get_transition!(object, to_state, actor)
process_transition(object, transition, actor, *)
end
|
#process_transition(object, transition, actor, *extras) ⇒ Object
36
37
38
|
# File 'lib/wesm/wesm.rb', line 36
def process_transition(object, transition, actor, *)
object.public_send("#{state_field}=", transition.to_state)
end
|
#required_fields(object, to_state) ⇒ Object
25
26
27
28
|
# File 'lib/wesm/wesm.rb', line 25
def required_fields(object, to_state)
transition = get_transition(object, to_state)
transition && transition.required_fields(object)
end
|
#show_transitions(object, actor) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/wesm/wesm.rb', line 12
def show_transitions(object, actor)
transitions_for(object).map do |transition|
is_authorized = transition.actor_is_valid?(object, actor)
{
to_state: transition.to_state,
is_authorized: is_authorized,
can_perform: is_authorized && transition.required_fields_present?(object),
required_fields: transition.required_fields(object)
}
end
end
|
#successors(object) ⇒ Object
8
9
10
|
# File 'lib/wesm/wesm.rb', line 8
def successors(object)
transitions_for(object).map(&:to_state).uniq
end
|
#transition(options) ⇒ Object
2
3
4
5
6
|
# File 'lib/wesm/wesm.rb', line 2
def transition(options)
@transitions ||= {}
transition = Transition.new(options)
(@transitions[transition.from_state] ||= []) << transition.freeze
end
|