Module: Doze::Utils
- Extended by:
- Utils
- Included in:
- Application, Responder, Responder::Resource, Response, Utils
- Defined in:
- lib/doze/utils.rb
Overview
Various stateless utility functions which aid the conversion back and forth between HTTP syntax and the more abstracted ruby representations we use.
Constant Summary collapse
- URI_SCHEMES =
Hash.new(URI::Generic).merge!( 'http' => URI::HTTP, 'https' => URI::HTTPS )
Instance Method Summary collapse
- #escape(s) ⇒ Object
- #quote(str) ⇒ Object
- #request_base_uri(request) ⇒ Object
-
#unescape(s) ⇒ Object
Rack::Utils.unescape, but without turning ‘+’ into ‘ ’ Also must be passed a string.
Instance Method Details
#escape(s) ⇒ Object
42 43 44 45 46 |
# File 'lib/doze/utils.rb', line 42 def escape(s) s.gsub(/([^a-zA-Z0-9_.-]+)/n) do '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase end end |
#quote(str) ⇒ Object
22 23 24 |
# File 'lib/doze/utils.rb', line 22 def quote(str) '"' << str.gsub(/[\\\"]/o, "\\\1") << '"' end |
#request_base_uri(request) ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/doze/utils.rb', line 14 def request_base_uri(request) URI_SCHEMES[request.scheme].build( :scheme => request.scheme, :port => request.port, :host => request.host ) end |
#unescape(s) ⇒ Object
Rack::Utils.unescape, but without turning ‘+’ into ‘ ’ Also must be passed a string.
33 34 35 |
# File 'lib/doze/utils.rb', line 33 def unescape(s) s.gsub(/((?:%[0-9a-fA-F]{2})+)/n) { [$1.delete('%')].pack('H*') } end |