module AppleCore::ActionView::Helpers::WebClientUrl
Public Instance Methods
web_client_url(**options)
click to toggle source
rubocop:disable Metrics/AbcSize, Metrics/MethodLength
# File lib/apple_core/action_view/helpers/web_client_url.rb, line 13 def web_client_url(**options) route_name = options.delete(:name) if defined?(::Chamber) default_options = Chamber.env.web_client.slice('host', 'port', 'protocol') original_path = Chamber.env.web_client.urls[route_name] else default_options = {} original_path = options.delete(:path) end path = options.dup.inject(original_path) do |memo, (key, value)| key_pattern = %r{/:#{key}(?=(/|\z))} if memo.match?(key_pattern) options.delete(key) memo.gsub(key_pattern, "/#{value}") else memo end end options = default_options.merge(options) anchor = options.delete('anchor') arguments = [ options.delete('protocol'), options.delete('authentication'), options.delete('host'), options.delete('port') || 443, nil, path, nil, options.to_query, anchor, ] URI::HTTPS.new(*arguments).to_s end