Module: RubyTerraform::Models::Objects

Defined in:
lib/ruby_terraform/models/objects.rb

Overview

rubocop:disable Metrics/ModuleLength

Class Method Summary collapse

Class Method Details

.box(object, unknown: nil, sensitive: nil) ⇒ Object

rubocop:disable Style/RedundantAssignment rubocop:disable Metrics/MethodLength



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/ruby_terraform/models/objects.rb', line 14

def box(object, unknown: nil, sensitive: nil)
  initial = boxed_empty_by_value(object)
  object = symbolise(object)
  unknown = symbolised_or_native_empty(unknown, object)
  sensitive = symbolised_or_native_empty(sensitive, object)

  return Values.unknown(sensitive:) if unknown == true

  unless object.is_a?(Hash) || object.is_a?(Array)
    return Values.known(object, sensitive:)
  end

  boxed_unknown =
    box_unknown(unknown, sensitive:, initial:)

  boxed_object =
    box_known(object, sensitive:, initial: boxed_unknown)

  boxed_object
end

.known_values(path_set, object: {}, sensitive: {}) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/ruby_terraform/models/objects.rb', line 41

def known_values(path_set, object: {}, sensitive: {})
  path_set.paths.map do |path|
    resolved = path.read(object)
    resolved_sensitive = path.read(sensitive) == true

    Values.known(resolved, sensitive: resolved_sensitive)
  end
end

.object(path_set, values, sensitive: {}, initial: Values.empty_map, filler: Values.omitted) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/ruby_terraform/models/objects.rb', line 59

def object(path_set, values,
           sensitive: {},
           initial: Values.empty_map,
           filler: Values.omitted)
  gaps = path_set.gaps
  extra_values = gaps.paths.collect { |p| [p, filler] }

  path_values = path_set.paths.zip(values) + extra_values
  path_values = sort_by_path(path_values)

  update_all(initial, path_values, sensitive)
end

.paths(object) ⇒ Object

rubocop:enable Metrics/MethodLength rubocop:enable Style/RedundantAssignment



37
38
39
# File 'lib/ruby_terraform/models/objects.rb', line 37

def paths(object)
  PathSet.extract_from(object)
end

.unknown_values(path_set, unknown: {}, sensitive: {}) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/ruby_terraform/models/objects.rb', line 50

def unknown_values(path_set, unknown: {}, sensitive: {})
  path_set.paths.map do |path|
    resolved = path.read(unknown)
    resolved_sensitive = path.read(sensitive) == true

    resolved ? Values.unknown(sensitive: resolved_sensitive) : nil
  end
end