Class: MendixBridge::DSL::NavigationBuilder

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, home_page, login_page, not_found_page) ⇒ NavigationBuilder

Returns a new instance of NavigationBuilder.



126
127
128
129
130
131
132
133
# File 'lib/mendix_bridge/dsl.rb', line 126

def initialize(name, home_page, , not_found_page)
  @name = name.to_s
  @home_page = home_page.to_s
  @login_page = &.to_s
  @not_found_page = not_found_page&.to_s
  @role_home_pages = []
  @items = []
end

Class Method Details

.build(name, home_page:, login_page: nil, not_found_page: nil, &block) ⇒ Object



120
121
122
123
124
# File 'lib/mendix_bridge/dsl.rb', line 120

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

Instance Method Details

#home_page(page, for_role:) ⇒ Object

Raises:

  • (ArgumentError)


135
136
137
138
139
140
141
# File 'lib/mendix_bridge/dsl.rb', line 135

def home_page(page, for_role:)
  role = for_role.to_s
  raise ArgumentError, "duplicate role home page: #{role}" if
    @role_home_pages.any? { |entry| entry.role == role }

  @role_home_pages << Model::RoleHomePage.new(role:, page: page.to_s)
end


147
148
149
150
151
152
153
154
# File 'lib/mendix_bridge/dsl.rb', line 147

def menu(caption, &block)
  builder = NavigationMenuBuilder.new
  builder.instance_eval(&block)
  @items << Model::NavigationMenu.new(
    caption: caption.to_s,
    items: builder.items
  )
end


143
144
145
# File 'lib/mendix_bridge/dsl.rb', line 143

def menu_item(caption, page: nil, microflow: nil, nanoflow: nil)
  @items << build_item(caption, page:, microflow:, nanoflow:)
end

#resultObject



156
157
158
159
160
161
162
163
164
165
# File 'lib/mendix_bridge/dsl.rb', line 156

def result
  Model::NavigationProfile.new(
    name: @name,
    home_page: @home_page,
    role_home_pages: @role_home_pages,
    login_page: @login_page,
    not_found_page: @not_found_page,
    items: @items
  )
end