Class: MendixBridge::DSL::PageBuilder

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, title, layout, folder) ⇒ PageBuilder

Returns a new instance of PageBuilder.



291
292
293
294
295
296
297
298
299
# File 'lib/mendix_bridge/dsl.rb', line 291

def initialize(name, title, layout, folder)
  @name = name.to_s
  @title = title.to_s
  @layout = layout.to_s
  @folder = folder&.to_s
  @parameters = []
  @content = nil
  @view_roles = []
end

Class Method Details

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



285
286
287
288
289
# File 'lib/mendix_bridge/dsl.rb', line 285

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

Instance Method Details

#content(source) ⇒ Object

Raises:

  • (ArgumentError)


309
310
311
312
313
# File 'lib/mendix_bridge/dsl.rb', line 309

def content(source)
  raise ArgumentError, "page content is already declared" if @content

  @content = source.to_s.strip
end

#parameter(name, type) ⇒ Object



301
302
303
304
305
306
307
# File 'lib/mendix_bridge/dsl.rb', line 301

def parameter(name, type)
  if @parameters.any? { |parameter| parameter.name == name.to_s }
    raise ArgumentError, "duplicate page parameter: #{name}"
  end

  @parameters << Model::FlowParameter.new(name: name.to_s, type: type.to_s)
end

#resultObject

Raises:

  • (ArgumentError)


322
323
324
325
326
327
328
329
330
331
332
333
334
# File 'lib/mendix_bridge/dsl.rb', line 322

def result
  raise ArgumentError, "page #{@name} requires content" if @content.nil? || @content.empty?

  Model::Page.new(
    name: @name,
    title: @title,
    layout: @layout,
    folder: @folder,
    parameters: @parameters,
    content: @content,
    view_roles: @view_roles
  )
end

#view_role(role) ⇒ Object

Raises:

  • (ArgumentError)


315
316
317
318
319
320
# File 'lib/mendix_bridge/dsl.rb', line 315

def view_role(role)
  role = role.to_s
  raise ArgumentError, "duplicate view role: #{role}" if @view_roles.include?(role)

  @view_roles << role
end