Class: MendixBridge::DSL::EnumerationBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/mendix_bridge/dsl.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, folder) ⇒ EnumerationBuilder

Returns a new instance of EnumerationBuilder.



395
396
397
398
399
# File 'lib/mendix_bridge/dsl.rb', line 395

def initialize(name, folder)
  @name = name.to_s
  @folder = folder&.to_s
  @values = []
end

Class Method Details

.build(name, folder: nil, &block) ⇒ Object



389
390
391
392
393
# File 'lib/mendix_bridge/dsl.rb', line 389

def self.build(name, folder: nil, &block)
  builder = new(name, folder)
  builder.instance_eval(&block) if block
  builder.result
end

Instance Method Details

#resultObject

Raises:

  • (ArgumentError)


412
413
414
415
416
# File 'lib/mendix_bridge/dsl.rb', line 412

def result
  raise ArgumentError, "enumeration #{@name} requires at least one value" if @values.empty?

  Model::Enumeration.new(name: @name, folder: @folder, values: @values)
end

#value(name, caption: nil) ⇒ Object



401
402
403
404
405
406
407
408
409
410
# File 'lib/mendix_bridge/dsl.rb', line 401

def value(name, caption: nil)
  if @values.any? { |value| value.name == name.to_s }
    raise ArgumentError, "duplicate enumeration value: #{name}"
  end

  @values << Model::EnumerationValue.new(
    name: name.to_s,
    caption: (caption || name).to_s
  )
end