Sha256: 7bef033e9709ce093e9abe58c2f11831a8719d012019779d1036f09e37a4336a

Contents?: true

Size: 437 Bytes

Versions: 83

Compression:

Stored size: 437 Bytes

Contents

# Allow for safe recursive lookup of values during variable interpolation.
#
# @api private
class Hiera::InterpolationLoop < StandardError; end

class Hiera::RecursiveGuard
  def initialize
    @seen = []
  end

  def check(value, &block)
    if @seen.include?(value)
      raise Hiera::InterpolationLoop, "Lookup recursion detected in [#{@seen.join(', ')}]"
    end
    @seen.push(value)
    ret = yield
    @seen.pop
    ret
  end
end

Version data entries

83 entries across 83 versions & 2 rubygems

Version Path
hiera-3.12.0 lib/hiera/recursive_guard.rb
hiera-3.11.0 lib/hiera/recursive_guard.rb
hiera-3.10.0 lib/hiera/recursive_guard.rb
hiera-3.9.0 lib/hiera/recursive_guard.rb
hiera-3.8.0 lib/hiera/recursive_guard.rb
hiera-3.7.0 lib/hiera/recursive_guard.rb
hiera-3.6.0 lib/hiera/recursive_guard.rb
hiera-3.4.6 lib/hiera/recursive_guard.rb
hiera-3.5.0 lib/hiera/recursive_guard.rb
bolt-0.24.0 vendored/hiera/lib/hiera/recursive_guard.rb
bolt-0.23.0 vendored/hiera/lib/hiera/recursive_guard.rb
hiera-3.4.5 lib/hiera/recursive_guard.rb
bolt-0.22.0 vendored/hiera/lib/hiera/recursive_guard.rb
bolt-0.21.8 vendored/hiera/lib/hiera/recursive_guard.rb
hiera-3.4.4 lib/hiera/recursive_guard.rb
bolt-0.21.7 vendored/hiera/lib/hiera/recursive_guard.rb
bolt-0.21.6 vendored/hiera/lib/hiera/recursive_guard.rb
bolt-0.21.5 vendored/hiera/lib/hiera/recursive_guard.rb
bolt-0.21.4 vendored/hiera/lib/hiera/recursive_guard.rb
bolt-0.21.3 vendored/hiera/lib/hiera/recursive_guard.rb