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