Sha256: 42226a3177cb72ef235b2fe6f136413228fbb928b9ee12ba502339c694141e8a
Contents?: true
Size: 1.09 KB
Versions: 7
Compression:
Stored size: 1.09 KB
Contents
module CabbageDoc class Params include Enumerable ACTION = '__action'.freeze METHOD = '__method'.freeze TAG = '__tag'.freeze def initialize(params, collection) @_params = convert(params, collection) end def each @_params.each do |k, v| yield(k, v) end end def delete(key) @_params.delete(key) end def find(key) @_params[key] end def valid? @_params.any? end def to_hash @_params end def to_query @_params.map do |k, v| if v.is_a?(Array) v.map { |vv| "#{k}[]=#{CGI.escape(vv)}" } else "#{k}=#{CGI.escape(v)}" end end.flatten.join('&') end private def convert(params, collection) method = params[METHOD] action = params[ACTION] return {} unless action && method action = collection.find_action(method, action) return {} unless action {}.tap do |hash| params.each do |k, v| hash[k] = v if action.param?(k.sub(/\[\]$/, '')) end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems