class Apitizer::Routing::Node::Collection

Public Class Methods

new(name, options = {}) click to toggle source
# File lib/apitizer/routing/node/collection.rb, line 5
def initialize(name, options = {})
  @name = name
  only = options[:only]
  except = options[:except] || []
  @actions = (only && Array(only) || Apitizer.actions) - Array(except)
end

Public Instance Methods

permit?(action, options) click to toggle source
# File lib/apitizer/routing/node/collection.rb, line 16
def permit?(action, options)
  @actions.include?(action) &&
    Helper.action_scope(action) == options.fetch(:on)
end
recognize?(steps) click to toggle source
# File lib/apitizer/routing/node/collection.rb, line 12
def recognize?(steps)
  @name == steps.first
end

Private Instance Methods

walk(steps, path) click to toggle source
# File lib/apitizer/routing/node/collection.rb, line 23
def walk(steps, path)
  path.advance(steps.shift, node: self, on: :collection)

  return if steps.empty?

  children.each do |child|
    next unless child.respond_to?(:on?) && child.on?(:collection)
    return if child.recognize?(steps)
  end

  path.advance(steps.shift, node: self, on: :member)
end