Sha256: dc76138138bb027af820506b742a40fe00298fb561a57613f373f409d068aa81

Contents?: true

Size: 1.59 KB

Versions: 16

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

module Hanami
  class Router
    # Renders a human friendly representation of the routes
    #
    # @api private
    # @since 2.0.0
    module Formatter
      class HumanFriendly
        # @api private
        # @since 2.0.0
        NEW_LINE = $/
        private_constant :NEW_LINE

        # @api private
        # @since 2.0.0
        SMALL_STRING_JUSTIFY_AMOUNT = 8
        private_constant :SMALL_STRING_JUSTIFY_AMOUNT

        # @api private
        # @since 2.0.0
        MEDIUM_STRING_JUSTIFY_AMOUNT = 20
        private_constant :MEDIUM_STRING_JUSTIFY_AMOUNT

        # @api private
        # @since 2.0.0
        LARGE_STRING_JUSTIFY_AMOUNT = 30
        private_constant :LARGE_STRING_JUSTIFY_AMOUNT

        # @api private
        # @since 2.0.0
        EXTRA_LARGE_STRING_JUSTIFY_AMOUNT = 40
        private_constant :EXTRA_LARGE_STRING_JUSTIFY_AMOUNT

        # @api private
        # @since 2.0.0
        def call(routes)
          routes.filter_map(&method(:format_route_unless_head)).join(NEW_LINE)
        end

        private

        def format_route_unless_head(route)
          !route.head? &&
            [
              route.http_method.to_s.ljust(SMALL_STRING_JUSTIFY_AMOUNT),
              route.path.ljust(LARGE_STRING_JUSTIFY_AMOUNT),
              route.inspect_to.ljust(LARGE_STRING_JUSTIFY_AMOUNT),
              route.as? ? "as #{route.inspect_as}".ljust(MEDIUM_STRING_JUSTIFY_AMOUNT) : "",
              route.constraints? ? "(#{route.inspect_constraints})".ljust(EXTRA_LARGE_STRING_JUSTIFY_AMOUNT) : ""
            ].join
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
hanami-router-2.2.0 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.2.0.rc1 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.2.0.beta2 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.2.0.beta1 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.1.0 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.1.0.rc3 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.1.0.rc2 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.1.0.rc1 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.1.0.beta1 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.0.2 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.0.1 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.0.0 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.0.0.rc1 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.0.0.beta4 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.0.0.beta2 lib/hanami/router/formatter/human_friendly.rb
hanami-router-2.0.0.beta1 lib/hanami/router/formatter/human_friendly.rb