class EscapeUriString

Constants

RESERVED_CHARACTERS

Public Class Methods

new(string) click to toggle source
# File lib/escape_uri_string.rb, line 11
def initialize(string)
  @string = string
  validate
end

Public Instance Methods

escape() click to toggle source
# File lib/escape_uri_string.rb, line 16
def escape
  escaped = escape_uri(@string) || escape_uri(@string.force_encoding(Encoding::UTF_8))

  unless escaped
    fail ArgumentError, "Unable to escape string: #{@string}"
  end

  escaped
end

Private Instance Methods

escape_uri(string) click to toggle source
# File lib/escape_uri_string.rb, line 44
def escape_uri(string)
  begin
    URI::escape(string.to_s, RESERVED_CHARACTERS)
  rescue ArgumentError
  rescue
  end
end
validate() click to toggle source
# File lib/escape_uri_string.rb, line 28
def validate
  # true/false can be converted to it's string form clearly
  if @string.kind_of?(TrueClass) || @string.kind_of?(FalseClass)
    return true
  end

  # we shouldn't deal with arrays, hashes and e.g.
  unless @string.kind_of?(String)
    fail ArgumentError, 'Attempt to escape non-string'
  end

  if @string.nil? || @string.empty?
    fail ArgumentError, 'Attempt to escape empty string'
  end
end