Module: Parametric::Params

Defined in:
lib/parametric/params.rb

Defined Under Namespace

Modules: DSL

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



15
16
17
18
19
20
# File 'lib/parametric/params.rb', line 15

def self.included(base)
  base.send(:attr_reader, :params)
  base.class_attribute :_allowed_params
  base._allowed_params = {}
  base.extend DSL
end

Instance Method Details

#available_paramsObject



26
27
28
29
30
31
32
# File 'lib/parametric/params.rb', line 26

def available_params
  @available_params ||= params.each_with_object(ParamsHash.new) do |(k,v),memo|
    if Utils.present?(v)
      memo[k] = v.respond_to?(:available_params) ? v.available_params : v
    end
  end
end

#initialize(raw_params = {}) ⇒ Object



22
23
24
# File 'lib/parametric/params.rb', line 22

def initialize(raw_params = {})
  @params = _reduce(raw_params)
end

#schemaObject



34
35
36
37
38
39
40
41
42
# File 'lib/parametric/params.rb', line 34

def schema
  @schema ||= params.each_with_object({}) do |(k,v),memo|
    is_nested = v.kind_of?(Parametric::Hash)
    attrs = self.class._allowed_params[k].dup
    attrs[:value] = is_nested ? v : Utils.value(v)
    attrs[:schema] = v.schema if is_nested
    memo[k] = OpenStruct.new(attrs)
  end
end