Sha256: 0ef7bda5440eae61e15cbcf7894796ef2ed39897a81d4e46187453407184abe5
Contents?: true
Size: 816 Bytes
Versions: 1
Compression:
Stored size: 816 Bytes
Contents
module Workflow class Event attr_accessor :name, :transitions_to, :meta, :action, :condition def initialize(name, transitions_to, condition = nil, meta = {}, &action) @name = name @transitions_to = transitions_to.to_sym @meta = meta @action = action @condition = if condition.nil? || condition.respond_to?(:call) condition else raise TypeError, 'condition must be nil or callable (eg. a proc or lambda)' end end def condition_applicable?(object) condition ? condition.call(object) : true end def draw(graph, from_state) graph.add_edges(from_state.name.to_s, transitions_to.to_s, meta.merge(:label => to_s)) end def to_s @name.to_s end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
workflow-1.2.0 | lib/workflow/event.rb |