Sha256: 515867d050fd342d7eea914fb9fc31f2cd4d8e169a37cdf10ded90b4eb0fea8d

Contents?: true

Size: 1.04 KB

Versions: 9

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

require "hanami/router/errors"
require "mustermann/error"
require_relative "prefix"

module Hanami
  class Router
    # @since 2.0.0
    # @api private
    class UrlHelpers
      # @since 2.0.0
      # @api private
      def initialize(base_url)
        @base_url = URI(base_url)
        @named = {}
        prefix = @base_url.path
        prefix = DEFAULT_PREFIX if prefix.empty?
        @prefix = Prefix.new(prefix)
      end

      # @since 2.0.0
      # @api private
      def add(name, segment)
        @named[name] = segment
      end

      # @since 2.0.0
      # @api private
      def path(name, variables = {})
        @named.fetch(name.to_sym) do
          raise MissingRouteError.new(name)
        end.expand(:append, variables)
      rescue Mustermann::ExpandError => exception
        raise InvalidRouteExpansionError.new(name, exception.message)
      end

      # @since 2.0.0
      # @api private
      def url(name, variables = {})
        @base_url + @prefix.join(path(name, variables)).to_s
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
hanami-router-2.2.0 lib/hanami/router/url_helpers.rb
hanami-router-2.2.0.rc1 lib/hanami/router/url_helpers.rb
hanami-router-2.2.0.beta2 lib/hanami/router/url_helpers.rb
hanami-router-2.2.0.beta1 lib/hanami/router/url_helpers.rb
hanami-router-2.1.0 lib/hanami/router/url_helpers.rb
hanami-router-2.1.0.rc3 lib/hanami/router/url_helpers.rb
hanami-router-2.1.0.rc2 lib/hanami/router/url_helpers.rb
hanami-router-2.1.0.rc1 lib/hanami/router/url_helpers.rb
hanami-router-2.1.0.beta1 lib/hanami/router/url_helpers.rb