Sha256: bac71ea6e70d934118b0c26dc793a26adeea3cdf107802dab3916a26983df153

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

module Fig; end

# Contains traces of file inclusions so that the user can track down which file
# an error occurred in.
class Fig::Backtrace
  attr_reader :overrides

  def initialize(parent, package_name, version_name, config_name)
    @parent = parent
    @package_name = package_name
    @version_name = version_name
    @config_name = config_name || 'default'
    @overrides = {}
  end

  def collect(stack)
    if @parent
      @parent.collect(stack)
    end
    elem = ''
    if @package_name
      elem = @package_name
    end
    if @version_name
      elem += '/' + @version_name
    end
    if @config_name
      elem += ':' + @config_name
    end
    stack << elem
  end

  def add_override(package_name, version_name)
    # Don't replace an existing override on the stack
    return if get_override(package_name)
    @overrides[package_name] = version_name
  end

  def get_override(package_name)
    return @overrides[package_name] || (@parent ? @parent.get_override(package_name) : nil)
  end

  def dump(out)
    stack = []
    collect(stack)
    i=0
    for elem in stack
      indent=''
      i.times { indent += '  ' }
      out.puts indent+elem
      i += 1
    end
   end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
fig-0.1.57 lib/fig/backtrace.rb
fig-0.1.55 lib/fig/backtrace.rb
fig-0.1.54 lib/fig/backtrace.rb
fig-0.1.53 lib/fig/backtrace.rb
fig-0.1.52 lib/fig/backtrace.rb