Class: Backtrace

Inherits:
Object
  • Object
show all
Defined in:
lib/fig/backtrace.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent, package_name, version_name, config_name) ⇒ Backtrace

Returns a new instance of Backtrace.



4
5
6
7
8
9
10
# File 'lib/fig/backtrace.rb', line 4

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

Instance Attribute Details

#overridesObject (readonly)

Returns the value of attribute overrides.



2
3
4
# File 'lib/fig/backtrace.rb', line 2

def overrides
  @overrides
end

Instance Method Details

#add_override(package_name, version_name) ⇒ Object



29
30
31
32
33
# File 'lib/fig/backtrace.rb', line 29

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

#collect(stack) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/fig/backtrace.rb', line 12

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

#dump(out) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/fig/backtrace.rb', line 39

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

#get_override(package_name) ⇒ Object



35
36
37
# File 'lib/fig/backtrace.rb', line 35

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