Class: Hecks::Bluebook::DSL::LifecycleBuilder

Inherits:
Object
  • Object
show all
Includes:
WordGate
Defined in:
lib/hecks/bluebook/dsl/lifecycle_builder.rb

Constant Summary collapse

GRAMMAR_CONTEXT =
"Lifecycle"

Constants included from WordGate

WordGate::NOT_ADMITTED

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(field, default:) ⇒ LifecycleBuilder

Returns a new instance of LifecycleBuilder.



10
11
12
13
14
# File 'lib/hecks/bluebook/dsl/lifecycle_builder.rb', line 10

def initialize(field, default:)
  @field       = field
  @default     = default
  @transitions = []
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Hecks::Bluebook::DSL::WordGate

Class Method Details

.build(field, default:, &block) ⇒ Object



36
37
38
39
40
# File 'lib/hecks/bluebook/dsl/lifecycle_builder.rb', line 36

def self.build(field, default:, &block)
  builder = new(field, default: default)
  builder.instance_eval(&block) if block
  builder.build
end

Instance Method Details

#buildObject



32
33
34
# File 'lib/hecks/bluebook/dsl/lifecycle_builder.rb', line 32

def build
  Lifecycle.new(field: @field, default: @default, transitions: @transitions)
end

#transition_impl(mapping) ⇒ Object

RENAMED FROM transition — item #13's full metaprogrammed dispatch (slice 4c). Bootstrap-reachable (syntax.bluebook's own Keyword/Argument entities describe their status lifecycle with it), so in BOOTSTRAP_CALLS_FALLBACK.



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/hecks/bluebook/dsl/lifecycle_builder.rb', line 20

def transition_impl(mapping)
  mapping = mapping.dup
  from    = mapping.delete(:from)

  mapping.each do |command, target|
    @transitions << [
      command.to_s,
      StateTransition.new(target: target, from: from)
    ]
  end
end