class Seory::Repository

Attributes

helper[RW]

Public Class Methods

extract_label_from_trace(trace) click to toggle source
# File lib/seory/repository.rb, line 8
def extract_label_from_trace(trace)
  trace.first.split(':').first
end
new() click to toggle source
# File lib/seory/repository.rb, line 15
def initialize
  @page_groups = []
end

Public Instance Methods

<<(page_group) click to toggle source
# File lib/seory/repository.rb, line 19
def <<(page_group)
  remove_old_group!(page_group.name)

  @page_groups << page_group

  clear_page_order_pre_calculation!
end
default() click to toggle source
# File lib/seory/repository.rb, line 35
def default
  @default ||=
    @page_groups.map(&:default).compact.tap {|defaults|
      raise DuplicateDefault if defaults.size > 1
    }.first
end
lookup(view_context) click to toggle source
# File lib/seory/repository.rb, line 27
def lookup(view_context)
  page = pre_orderd_pages.detect {|pg| pg.match?(view_context.controller) } || default

  Seory::Runtime.new(page, view_context, default).tap do |runtime|
    runtime.extend helper if helper
  end
end

Private Instance Methods

clear_page_order_pre_calculation!() click to toggle source
# File lib/seory/repository.rb, line 52
def clear_page_order_pre_calculation!
  @pre_orderd_pages = nil
  @default = nil
end
pre_orderd_pages() click to toggle source
# File lib/seory/repository.rb, line 44
def pre_orderd_pages
  @pre_orderd_pages ||= @page_groups.sort_by(&:name).flat_map(&:pages)
end
remove_old_group!(page_group_name) click to toggle source
# File lib/seory/repository.rb, line 48
def remove_old_group!(page_group_name)
  @page_groups.reject! {|pg| pg.name == page_group_name }
end