Sha256: 47179edb514cf588943a99f86540f98eb5bddb43af13fe2a6f59d5504b7dbd0b

Contents?: true

Size: 692 Bytes

Versions: 1

Compression:

Stored size: 692 Bytes

Contents

require 'rack'

unless Rack::Utils.respond_to?(:uri_escape)
  module Rack

    module Utils

      def uri_escape(s)
        s.to_s.gsub(/([^:\/?\[\]\-_~\.!\$&'\(\)\*\+,;=@a-zA-Z0-9]+)/n) {
          '%'<<$1.unpack('H2'*$1.size).join('%').upcase
        }
      end
      module_function :uri_escape

      def uri_escape!(s)
        s.to_s.gsub!(/([^:\/?\[\]\-_~\.!\$&'\(\)\*\+,;=@a-zA-Z0-9]+)/n) {
          '%'<<$1.unpack('H2'*$1.size).join('%').upcase
        }
      end
      module_function :uri_escape!

      def uri_unescape(s)
        gsub(/((?:%[0-9a-fA-F]{2})+)/n){
          [$1.delete('%')].pack('H*')
        }
      end
      module_function :uri_unescape

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
usher-0.6.7 lib/usher/util/rack-mixins.rb