class Argyle::Layout::Registry

Public Class Methods

new() click to toggle source
# File lib/argyle/layout/registry.rb, line 2
def initialize
  @layouts = {}
end

Public Instance Methods

add(layout) click to toggle source

@param id [Symbol] @param layout [Argyle::Layout::Base]

@raise [Argyle::Error::TypeError] If layout is not an instance of Argyle::Layout::Base @raise [Argyle::Error::ArgumentError] If he layout has no id set

# File lib/argyle/layout/registry.rb, line 12
def add(layout)
  unless layout.is_a?(Argyle::Layout::Base)
    raise Argyle::Error::TypeError.new("Layout must be an instance of #{Argyle::Layout::Base}")
  end

  raise Argyle::Error::ArgumentError.new("Layout #{layout.class} has no id") if layout.class.identifier.nil?

  @layouts[layout.class.identifier] = layout
end
clone(id) click to toggle source

@param id [Symbol]

@return [Argyle::Layout::Base] Clone of the original definition

@raise [Argyle::Error::NotFound] If the layout does not exist

# File lib/argyle/layout/registry.rb, line 28
def clone(id)
  raise Argyle::Error::NotFound.new("Unknown layout: #{id}") unless @layouts.include?(id)

  @layouts[id].clone
end