Module: JsxRosetta::PagesRouting::Emitter

Defined in:
lib/jsx_rosetta/pages_routing.rb

Overview

Renders a Scanner result as a full ‘config/routes.rb` file.

Class Method Summary collapse

Class Method Details

.emit(routes:, skipped:, source_dir:, generated_at: nil) ⇒ Object



419
420
421
422
423
424
425
426
427
428
429
430
431
# File 'lib/jsx_rosetta/pages_routing.rb', line 419

def emit(routes:, skipped:, source_dir:, generated_at: nil)
  generated_at ||= Time.now.utc.strftime("%Y-%m-%d")
  page_routes = routes.select { |r| r.kind == :standard }
  error_routes = routes.select { |r| r.kind == :error_page }
  layout_routes = routes.select { |r| r.kind == :layout }
  sections = [header(source_dir, generated_at, routes, skipped)]
  sections << skipped_block(skipped) unless skipped.empty?
  sections << layouts_block(layout_routes) unless layout_routes.empty?
  sections << error_pages_block(error_routes) unless error_routes.empty?
  sections << draw_block(page_routes, error_routes)
  sections << generator_hints(page_routes) unless page_routes.empty?
  "#{sections.join("\n\n")}\n"
end