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