Class: Plutonium::Definition::FormLayout::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/plutonium/definition/form_layout.rb

Overview

Collects section/ungrouped calls from a form_layout block in order.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBuilder

Returns a new instance of Builder.



40
41
42
43
# File 'lib/plutonium/definition/form_layout.rb', line 40

def initialize
  @sections = []
  @ungrouped_seen = false
end

Instance Attribute Details

#sectionsObject (readonly)

Returns the value of attribute sections.



38
39
40
# File 'lib/plutonium/definition/form_layout.rb', line 38

def sections
  @sections
end

Instance Method Details

#section(key, *fields, **options) ⇒ Object



45
46
47
48
49
50
51
52
# File 'lib/plutonium/definition/form_layout.rb', line 45

def section(key, *fields, **options)
  if key == UNGROUPED_KEY
    raise ArgumentError,
      "`section :#{UNGROUPED_KEY}` is reserved — use the `ungrouped` macro"
  end
  validate_columns!(options)
  @sections << Section.new(key:, fields: fields.freeze, options: options.freeze)
end

#ungrouped(**options) ⇒ Object

Raises:

  • (ArgumentError)


54
55
56
57
58
59
# File 'lib/plutonium/definition/form_layout.rb', line 54

def ungrouped(**options)
  raise ArgumentError, "`ungrouped` may only be declared once" if @ungrouped_seen
  @ungrouped_seen = true
  validate_columns!(options)
  @sections << Section.new(key: UNGROUPED_KEY, fields: [].freeze, options: options.freeze)
end