Class: Kafo::ParamBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/kafo/param_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(mod, data) ⇒ ParamBuilder

Returns a new instance of ParamBuilder.



6
7
8
9
10
# File 'lib/kafo/param_builder.rb', line 6

def initialize(mod, data)
  @data   = data
  @module = mod
  @groups = []
end

Instance Method Details

#build(name, data) ⇒ Object



54
55
56
57
58
59
60
61
# File 'lib/kafo/param_builder.rb', line 54

def build(name, data)
  param           = get_type(data[:types][name]).new(@module, name)
  param.default   = data[:values][name]
  param.doc       = data[:docs][name]
  param.groups    = data[:groups][name]
  param.condition = data[:conditions][name]
  param
end

#build_param_groups(params) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/kafo/param_builder.rb', line 35

def build_param_groups(params)
  data = Hash[get_parameters_groups_by_param_name]
  data.each do |param_name, param_groups|
    param_groups.each_with_index do |group_name, i|
      param_group = find_or_build_group(group_name)
      if i + 1 < param_groups.size
        param_group.add_child find_or_build_group(param_groups[i + 1])
      end

      param_group = find_or_build_group(param_groups.last)
      param       = params.detect { |p| p.name == param_name }
      param_group.add_param param unless param.nil?
    end
  end

  # top level groups
  data.values.map(&:first).compact.uniq.map { |name| @groups.detect { |g| g.name == name } }
end

#build_paramsObject



28
29
30
31
32
# File 'lib/kafo/param_builder.rb', line 28

def build_params
  @data[:parameters].map do |param_name|
    build(param_name, @data)
  end
end

#validateObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/kafo/param_builder.rb', line 12

def validate
  return true if KafoConfigure.config.app[:ignore_undocumented]

  parameters = @data[:parameters].sort
  docs       = @data[:docs].keys.sort
  if parameters == docs
    return true
  else
    undocumented = parameters - docs
    raise ConfigurationException, "undocumented parameters in #{@module.name}: #{undocumented.join(', ')}" unless undocumented.empty?
    deleted = docs - parameters
    raise ConfigurationException, "documentation mentioned unknown parameters in #{@module.name}: #{deleted.join(', ')}" unless deleted.empty?
    raise ConfigurationException, "unknown error in configuration in #{@module.name}"
  end
end