class Hanami::Routing::Resource

Set of RESTful resource routes Implementation of Hanami::Router#resource

@since 0.1.0

@api private

@see Hanami::Router#resource

Constants

NESTED_ROUTES_SEPARATOR

@api private @since 0.4.0

Attributes

parent[R]

@api private @since 0.4.0

Public Class Methods

new(router, name, options = {}, parent = nil, &blk) click to toggle source

@api private @since 0.1.0

# File lib/hanami/routing/resource.rb, line 56
def initialize(router, name, options = {}, parent = nil, &blk)
  @router  = router
  @name    = name
  @parent  = parent
  @options = Options.new(self.class.actions, options.merge(name: @name))
  generate(&blk)
end

Public Instance Methods

resource(name, options = {}, &blk) click to toggle source

Allow nested resource inside resource or resources

@since 0.4.0

@see Hanami::Router#resource

# File lib/hanami/routing/resource.rb, line 78
def resource(name, options = {}, &blk)
  _resource(Resource, name, options, &blk)
end
resources(name, options = {}, &blk) click to toggle source

Allow nested resources inside resource or resources

@since 0.4.0

@see Hanami::Router#resources

# File lib/hanami/routing/resource.rb, line 69
def resources(name, options = {}, &blk)
  _resource(Resources, name, options, &blk)
end
wildcard_param(route_param = nil) click to toggle source

Return separator

@api private @since 0.4.0

# File lib/hanami/routing/resource.rb, line 86
def wildcard_param(route_param = nil)
  NESTED_ROUTES_SEPARATOR
end

Private Instance Methods

_resource(klass, name, options, &blk) click to toggle source

@api private @since 0.4.0

# File lib/hanami/routing/resource.rb, line 94
def _resource(klass, name, options, &blk)
  options = options.merge(separator: @options[:separator], namespace: @options[:namespace])
  klass.new(@router, [@name, name].join(NESTED_ROUTES_SEPARATOR), options, self, &blk)
end
collection(&blk) click to toggle source

@api private

# File lib/hanami/routing/resource.rb, line 114
def collection(&blk)
  self.class.collection.new(@router, @options, self, &blk)
end
generate(&blk) click to toggle source

@api private

# File lib/hanami/routing/resource.rb, line 100
def generate(&blk)
  instance_eval(&blk) if block_given?

  @options.actions.each do |action|
    self.class.action.generate(@router, action, @options, self)
  end
end
member(&blk) click to toggle source

@api private

# File lib/hanami/routing/resource.rb, line 109
def member(&blk)
  self.class.member.new(@router, @options, self, &blk)
end