class Jets::Router::Scope
def from
def from @options[:from] end
def full_as
def full_as items = [] current = self while current items.unshift(current.options[:as]) # <= option_name current = current.parent end items.compact! return if items.empty? items = singularize_leading(items) items.join('_') end
def full_module
def full_module items = walk_parents do |current, i, result| mod = current.options[:module] next unless mod result.unshift(mod) end items.empty? ? nil : items.join('/') end
def full_prefix
def full_prefix items = walk_parents do |current, i, result| prefix = current.options[:prefix] next unless prefix case current.from when :resources variable = prefix.to_s.split('/').last variable = ":#{variable.singularize}_id" result.unshift(variable) result.unshift(prefix) else # resource, namespace or general scope result.unshift(prefix) end end items.empty? ? nil : items.join('/') end
def initialize(options = {}, parent = nil, level = 1)
def initialize(options = {}, parent = nil, level = 1) @options = options @parent = parent @level = level end
def new(options={})
def new(options={}) self.class.new(options, self, level + 1) end
def root?
def root? @parent.nil? end
def singularize_leading(items)
def singularize_leading(items) result = [] items.each_with_index do |item, index| item = item.to_s r = index == items.size - 1 ? item : item.singularize result << r end result end
def walk_parents
def walk_parents current, i, result = self, 0, [] while current yield(current, i, result) current = current.parent i += 1 end result end