module Rester::Utils
Public Class Methods
classify(str)
click to toggle source
# File lib/rester/utils.rb, line 93 def classify(str) str.to_s.split("_").map(&:capitalize).join end
decode_www_data(data)
click to toggle source
# File lib/rester/utils.rb, line 49 def decode_www_data(data) Rack::Utils.parse_nested_query(data) end
deep_freeze(value)
click to toggle source
# File lib/rester/utils.rb, line 101 def deep_freeze(value) value.freeze case value when Hash value.values.each { |v| deep_freeze(v) } when Array value.each { |v| deep_freeze(v) } end end
encode_www_data(value, prefix = nil)
click to toggle source
Copied from Rack::Utils.build_nested_query (version 1.6.0)
We want to be able to support Rack >= 1.5.2, but this method is broken in that version.
# File lib/rester/utils.rb, line 30 def encode_www_data(value, prefix = nil) # Rack::Utils.build_nested_query(value) case value when Array value.map { |v| encode_www_data(v, "#{prefix}[]") }.join("&") when Hash value.map { |k, v| encode_www_data(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k)) }.reject(&:empty?).join('&') when nil prefix else raise ArgumentError, "value must be a Hash" if prefix.nil? "#{prefix}=#{escape(value)}" end end
escape(value)
click to toggle source
# File lib/rester/utils.rb, line 53 def escape(value) URI.encode_www_form_component(value) end
extract_method_verb(meth)
click to toggle source
Determines the HTTP method/verb based on the method name. Defaults to GET but if the method ends with “!” it uses POST.
# File lib/rester/utils.rb, line 15 def extract_method_verb(meth) meth = meth.to_s if meth[-1] == '!' [:post, meth[0..-2]] else [:get, meth] end end
join_paths(*paths)
click to toggle source
# File lib/rester/utils.rb, line 57 def join_paths(*paths) paths.map(&:to_s).reject { |p| p.nil? || p.empty? } .join('/').gsub(/\/+/, '/') end
stringify(hash={})
click to toggle source
Converts all keys and values to strings.
# File lib/rester/utils.rb, line 89 def stringify(hash={}) decode_www_data(encode_www_data(hash)) end
symbolize_keys(hash)
click to toggle source
# File lib/rester/utils.rb, line 83 def symbolize_keys(hash) hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo} end
underscore(str)
click to toggle source
# File lib/rester/utils.rb, line 97 def underscore(str) str.scan(/[A-Z][a-z]*/).map(&:downcase).join('_') end
walk(object, context=nil) { |object, context| ... }
click to toggle source
# File lib/rester/utils.rb, line 62 def walk(object, context=nil, &block) case object when Hash Hash[ object.map { |key, val| [walk(key, :hash_key, &block), walk(val, :hash_value, &block)] } ] when Array object.map { |obj| walk(obj, :array_elem, &block) } when Range Range.new( walk(object.begin, :range_begin, &block), walk(object.end, :range_end, &block), object.exclude_end? ) else yield object, context end end