class Argyle::Blueprint
@!attribute [r] pages
@return [Hash{Symbol=>Argyle::Page}]
Attributes
pages[R]
Public Class Methods
new(layout_factory: nil, layout_registry: nil, page_factory: nil, renderer: nil)
click to toggle source
@param layout_factory [Argyle::Layout::Factory] @param layout_registry [Argyle::Layout::Registry] @param page_factory [Argyle::Page::Factory] @param renderer [Argyle::Renderer]
# File lib/argyle/blueprint.rb, line 12 def initialize(layout_factory: nil, layout_registry: nil, page_factory: nil, renderer: nil) @pages = {} @layouts = [] @current_page = nil @layout_factory = layout_factory || Argyle::Layout::Factory.new @layout_registry = layout_registry || create_layout_registry @page_factory = page_factory || Argyle::Page::Factory.new(@layout_registry) @renderer = renderer || Argyle::Renderer.new end
Public Instance Methods
add_page(page_klass)
click to toggle source
@param page_klass [Class<Argyle::Page::Base>] Subclass of Argyle::Page::Base
# File lib/argyle/blueprint.rb, line 35 def add_page(page_klass) raise Argyle::Error::ArgumentError.new("Page #{page_klass} has no id") if page_klass.identifier.nil? page = @page_factory.create(page_klass) @pages[page_klass.identifier] = page @current_page = page if @current_page.nil? end
render()
click to toggle source
@note Renders the current page
# File lib/argyle/blueprint.rb, line 46 def render raise Argyle::Error::NotFound.new('No pages defined yet') if @pages.empty? @renderer.render(@current_page) end
Private Instance Methods
create_layout_registry()
click to toggle source
# File lib/argyle/blueprint.rb, line 24 def create_layout_registry registry = Argyle::Layout::Registry.new registry.add(@layout_factory.create(Argyle::Layout::Default)) registry end