Sha256: 49db4c973a9c3e7755326c09bfbced5e87ffbb99c9b4c6f206f6c2c933431a79

Contents?: true

Size: 1.01 KB

Versions: 7

Compression:

Stored size: 1.01 KB

Contents

module CabbageDoc
  class Params
    include Enumerable

    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

Version Path
cabbage_doc-0.0.7 lib/cabbage_doc/params.rb
cabbage_doc-0.0.6 lib/cabbage_doc/params.rb
cabbage_doc-0.0.5 lib/cabbage_doc/params.rb
cabbage_doc-0.0.4 lib/cabbage_doc/params.rb
cabbage_doc-0.0.3 lib/cabbage_doc/params.rb
cabbage_doc-0.0.2 lib/cabbage_doc/params.rb
cabbage_doc-0.0.1 lib/cabbage_doc/params.rb