Class: Prefab::ResolvedConfigPresenter

Inherits:
Object
  • Object
show all
Defined in:
lib/prefab/resolved_config_presenter.rb

Defined Under Namespace

Classes: ConfigRow

Instance Method Summary collapse

Constructor Details

#initialize(resolver, lock, local_store) ⇒ ResolvedConfigPresenter

Returns a new instance of ResolvedConfigPresenter.



26
27
28
29
30
# File 'lib/prefab/resolved_config_presenter.rb', line 26

def initialize(resolver, lock, local_store)
  @resolver = resolver
  @lock = lock
  @local_store = local_store
end

Instance Method Details

#each(&block) ⇒ Object



32
33
34
# File 'lib/prefab/resolved_config_presenter.rb', line 32

def each(&block)
  to_h.each(&block)
end

#to_hObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/prefab/resolved_config_presenter.rb', line 36

def to_h
  hash = {}

  Prefab::Context.with_context({}) do
    @lock.with_read_lock do
      @local_store.keys.sort.each do |k|
        v = @local_store[k]

        if v.nil?
          hash[k] = ConfigRow.new(k, nil, nil, nil)
        else
          value = @resolver.evaluate(v[:config])&.reportable_value
          hash[k] = ConfigRow.new(k, value, v[:match], v[:source])
        end
      end
    end
  end

  hash
end

#to_sObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/prefab/resolved_config_presenter.rb', line 57

def to_s
  str = "\n"

  Prefab::Context.with_context({}) do
    @lock.with_read_lock do
      @local_store.keys.sort.each do |k|
        v = @local_store[k]
        elements = [k.slice(0..49).ljust(50)]
        if v.nil?
          elements << 'tombstone'
        else
          value = @resolver.evaluate(v[:config])&.reportable_value
          elements << value.to_s.slice(0..34).ljust(35)
          elements << value.class.to_s.slice(0..6).ljust(7)
          elements << "Match: #{v[:match]}".slice(0..29).ljust(30)
          elements << "Source: #{v[:source]}"
        end
        str += elements.join(' | ') << "\n"
      end
    end
  end

  str
end