Module: Unifig::Vars

Extended by:
TSort
Defined in:
lib/unifig/vars.rb

Overview

Information about variables after loading a configuration.

Class Method Summary collapse

Class Method Details

.[](name) ⇒ Unifig::Var or nil

Retrieve a variable by name unless it does not exist.

Parameters:

  • name (Symbol)

    The name of the variable.

Returns:



49
50
51
52
# File 'lib/unifig/vars.rb', line 49

def [](name)
  @map ||= {}
  @map[name]
end

.listArray<Unifig::Var>

Returns a list the variables.

Returns:



40
41
42
# File 'lib/unifig/vars.rb', line 40

def list
  (@map || {}).values
end

.load!(yml, env) ⇒ Object

Raises:



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

def load!(yml, env)
  vars = yml.to_h do |name, config|
    [name, Var.new(name, config || {}, env)]
  end

  vars
    .values
    .group_by(&:method)
    .each do |method_name, list|
      next unless list.size > 1

      names = list.map { |var| %("#{var.name}") }.join(', ')
      raise DuplicateNameError, "variables all result in the same method name (Unifig.#{method_name}): #{names}"
    end

  @map = vars
end

.write_results!(results, provider) ⇒ Object



30
31
32
33
34
35
# File 'lib/unifig/vars.rb', line 30

def write_results!(results, provider)
  results.each do |name, value|
    @map[name].value = value
    @map[name].provider = provider unless @map[name].value.nil?
  end
end