Class: Orchparty::Transformations::Variable

Inherits:
Object
  • Object
show all
Defined in:
lib/orchparty/transformations/variable.rb

Instance Method Summary collapse

Instance Method Details

#build_context(application:, service:) ⇒ Object



32
33
34
35
36
# File 'lib/orchparty/transformations/variable.rb', line 32

def build_context(application:, service:)
  application._variables ||= {}
  variables = application._variables.merge(service._variables)
  Context.new(variables.merge({application: application.merge(application._variables), service: service.merge(service._variables)}))
end

#eval_value(context, value) ⇒ Object



28
29
30
# File 'lib/orchparty/transformations/variable.rb', line 28

def eval_value(context, value)
  context.instance_exec(&value)
end

#transform(ast) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/orchparty/transformations/variable.rb', line 5

def transform(ast)
  ast.applications.each do |_, application|
    application.services = application.services.each do |_, service|
      service.deep_transform_values! do |v|
        if v.respond_to?(:call)
          eval_value(build_context(application: application, service: service), v) 
        elsif v.is_a? Array
          v.map do |v|
            if v.respond_to?(:call)
              eval_value(build_context(application: application, service: service), v) 
            else
              v
            end
          end
        else
          v
        end
      end
    end
  end
  ast
end