Class: Hanami::Action::BaseParams

Inherits:
Object
  • Object
show all
Defined in:
lib/hanami/action/base_params.rb

Overview

Since:

  • 0.1.0

Direct Known Subclasses

Params

Constant Summary collapse

RACK_INPUT =

The key that returns raw input from the Rack env

Since:

  • 0.7.0

'rack.input'.freeze
ROUTER_PARAMS =

The key that returns router params from the Rack env This is a builtin integration for Hanami::Router

Since:

  • 0.7.0

'router.params'.freeze
GET_SEPARATOR =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Separator for #get

See Also:

  • Params#get

Since:

  • 0.7.0

'.'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ Params

Initialize the params and freeze them.

Parameters:

  • env (Hash)

    a Rack env or an hash of params.

Since:

  • 0.7.0



45
46
47
48
49
50
# File 'lib/hanami/action/base_params.rb', line 45

def initialize(env)
  @env    = env
  @raw    = _extract_params
  @params = Utils::Hash.new(@raw).symbolize!.to_h
  freeze
end

Instance Attribute Details

#envObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 0.7.0



30
31
32
# File 'lib/hanami/action/base_params.rb', line 30

def env
  @env
end

#rawObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 0.7.0



36
37
38
# File 'lib/hanami/action/base_params.rb', line 36

def raw
  @raw
end

Instance Method Details

#[](key) ⇒ Object?

Returns the object associated with the given key

Parameters:

  • key (Symbol)

    the key

Returns:

  • (Object, nil)

    return the associated object, if found

Since:

  • 0.7.0



59
60
61
# File 'lib/hanami/action/base_params.rb', line 59

def [](key)
  @params[key]
end

#each(&blk) ⇒ Object

Iterates through params

Parameters:

  • blk (Proc)

Since:

  • 0.7.1



132
133
134
# File 'lib/hanami/action/base_params.rb', line 132

def each(&blk)
  to_h.each(&blk)
end

#get(key) ⇒ Object, NilClass

Get an attribute value associated with the given key. Nested attributes are reached with a dot notation.

Examples:

require 'hanami/controller'

module Deliveries
  class Create
    include Hanami::Action

    def call(params)
      params.get('customer_name')   # => "Luca"
      params.get('uknown')          # => nil

      params.get('address.city')    # => "Rome"
      params.get('address.unknown') # => nil

      params.get(nil)               # => nil
    end
  end
end

Parameters:

  • key (String)

    the key

Returns:

  • (Object, NilClass)

    return the associated value, if found

Raises:

  • (NoMethodError)

    if key is nil

Since:

  • 0.7.0



92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/hanami/action/base_params.rb', line 92

def get(key)
  key, *keys = key.to_s.split(GET_SEPARATOR)
  return if key.nil?

  result = self[key.to_sym]

  Array(keys).each do |k|
    break if result.nil?
    result = result[k.to_sym]
  end

  result
end

#to_h::Hash Also known as: to_hash

Serialize params to Hash

Returns:

  • (::Hash)

Since:

  • 0.7.0



122
123
124
# File 'lib/hanami/action/base_params.rb', line 122

def to_h
  @params
end

#valid?TrueClass

Provide a common interface with Params

Returns:

  • (TrueClass)

    always returns true

See Also:

Since:

  • 0.7.0



113
114
115
# File 'lib/hanami/action/base_params.rb', line 113

def valid?
  true
end