Sha256: beeb3e40656e0d15c725577ef31e01b1dde41fbc01479566901143062e3f6452

Contents?: true

Size: 894 Bytes

Versions: 32

Compression:

Stored size: 894 Bytes

Contents

require 'cgi'
require 'uri'

require 'fig/user_input_error'

module Fig; end

module Fig::URL
  # From https://www.rfc-editor.org/rfc/rfc1738.txt
  def self.is_url?(url)
    # We don't count single-letter "protocols" to allow for Windows drive
    # letters in paths.
    return !! ( url =~ %r< \A [a-z0-9+.-]{2,} : >ix )
  end

  # Encodes components and joins with slashes.
  def self.append_path_components(base_url, components)
    url     = base_url.sub(%r< / \z >x, '')
    encoded = components.map { |component| CGI.escape component }

    return [url, encoded].flatten.join('/')
  end

  # URI.parse() doesn't like space characters, unlike most of the world.
  def self.parse(url)
    begin
      return URI.parse(url.gsub ' ', '+')
    rescue URI::InvalidURIError => error
      raise Fig::UserInputError.new \
        %Q<Cannot parse URL "#{url}": #{error.message}>
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
fig-1.23.0 lib/fig/url.rb
fig-1.22.1.beta.1 lib/fig/url.rb
fig-1.22.0 lib/fig/url.rb
fig-1.21.1.beta.2 lib/fig/url.rb
fig-1.21.1.beta.1 lib/fig/url.rb
fig-1.21.0 lib/fig/url.rb
fig-1.20.1.beta.1 lib/fig/url.rb
fig-1.20.0 lib/fig/url.rb
fig-1.19.0 lib/fig/url.rb
fig-1.18.0 lib/fig/url.rb
fig-1.17.0 lib/fig/url.rb
fig-1.16.1.beta.1 lib/fig/url.rb
fig-1.16.0 lib/fig/url.rb
fig-1.15.1.beta.2 lib/fig/url.rb
fig-1.15.1.beta.1 lib/fig/url.rb
fig-1.15.0 lib/fig/url.rb
fig-1.14.0 lib/fig/url.rb
fig-1.13.0 lib/fig/url.rb
fig-1.12.0 lib/fig/url.rb
fig-1.11.0 lib/fig/url.rb