lib/hanami/router/route.rb in hanami-router-2.0.0.beta4 vs lib/hanami/router/route.rb in hanami-router-2.0.0.rc1
- old
+ new
@@ -6,29 +6,61 @@
module Hanami
class Router
# A route from the router
#
# @since 2.0.0
+ # @api public
class Route
- # @api private
# @since 2.0.0
+ # @api private
ROUTE_CONSTRAINT_SEPARATOR = ", "
private_constant :ROUTE_CONSTRAINT_SEPARATOR
+ # Returns the route's HTTP method.
+ #
+ # @example
+ # route.http_method # => "GET"
+ #
+ # @return [String]
+ #
# @since 2.0.0
+ # @api public
attr_reader :http_method
+ # Returns the route's path.
+ #
+ # @example
+ # route.path # => "/a/b/c"
+ #
+ # @return [String]
+ #
# @since 2.0.0
+ # @api public
attr_reader :path
+ # Returns the route's Rack endpoint, as given to `to:` when the route was defined.
+ #
+ # @return [Object]
+ #
# @since 2.0.0
+ # @api public
attr_reader :to
+ # Returns the route's unique name, as given to `as:` when the route was defined.
+ #
+ # @return [Object]
+ #
# @since 2.0.0
+ # @api public
attr_reader :as
+ # Returns the route's contraints hash for its path variables.
+ #
+ # @return [Hash]
+ #
# @since 2.0.0
+ # @api public
attr_reader :constraints
# @api private
# @since 2.0.0
def initialize(http_method:, path:, to:, as: nil, constraints: {}, blk: nil) # rubocop:disable Metrics/ParameterLists
@@ -39,26 +71,52 @@
@constraints = constraints
@blk = blk
freeze
end
+ # Returns true if the route is for the HEAD HTTP method.
+ #
+ # @return [Boolean]
+ #
+ # @see #http_method
+ #
# @since 2.0.0
+ # @api public
def head?
http_method == ::Rack::HEAD
end
+ # Returns true if the route has a name.
+ #
+ # @return [Boolean]
+ #
+ # @see #as
+ #
# @since 2.0.0
+ # @api public
def as?
!as.nil?
end
+ # Returns true if the route has any constraints.
+ #
+ # @return [Boolean]
+ #
+ # @see #constraints
+ #
# @since 2.0.0
+ # @api public
def constraints?
constraints.any?
end
+ # Returns a string containing a human-readable representation of the route's {#to} endpoint.
+ #
+ # @return [String]
+ #
# @since 2.0.0
+ # @api public
def inspect_to(value = to)
case value
when String
value
when Proc
@@ -72,17 +130,29 @@
else
inspect_to(value.class)
end
end
+ # Returns a string containing a human-readable representation of the route's {#constraints}.
+ #
+ # @return [String]
+ #
# @since 2.0.0
+ # @api public
def inspect_constraints
@constraints.map do |key, value|
"#{key}: #{value.inspect}"
end.join(ROUTE_CONSTRAINT_SEPARATOR)
end
+ # Returns a string containing a human-readable representation of the route's name.
+ #
+ # @return [String]
+ #
+ # @see #as
+ #
# @since 2.0.0
+ # @api public
def inspect_as
as ? as.inspect : Router::EMPTY_STRING
end
end
end