Module: TraceLineNumbers

Defined in:
lib/tracelines.rb

Class Method Summary collapse

Class Method Details

.compiled_methods(cm) ⇒ Object



13
14
15
16
17
# File 'lib/tracelines.rb', line 13

def compiled_methods(cm)
  result = [cm]
  result += cm.child_methods.map{|child| compiled_methods(child)}.flatten 
  result
end

.lnums_for_compiled_methods(compiled_method) ⇒ Object



20
21
22
23
# File 'lib/tracelines.rb', line 20

def lnums_for_compiled_methods(compiled_method)
  compiled_methods = compiled_methods(compiled_method)
  compiled_methods.map { |cm| lnums_for_lines(cm.lines) }.flatten.sort
end

.lnums_for_file(file) ⇒ Object

Return an array of lines numbers that could be stopped at given a file name of a Ruby program.



28
29
30
# File 'lib/tracelines.rb', line 28

def lnums_for_file(file)
  lnums_for_compiled_methods(Rubinius::Compiler.compile_file(file))
end

.lnums_for_lines(lines) ⇒ Object

Get line numbers for CompiledMethod.method#lines format is: ip line ip line … Odd numbers then are the line numbers



7
8
9
10
# File 'lib/tracelines.rb', line 7

def lnums_for_lines(lines)
  odds = (0...lines.size/2).map{|i| i*2+1}
  lines.to_a.values_at(*odds).sort
end

.lnums_for_str(str) ⇒ Object



43
44
45
# File 'lib/tracelines.rb', line 43

def lnums_for_str(str)
  lnums_for_compiled_methods(Rubinius::Compiler.compile_string(str))
end

.lnums_for_str_array(string_array, newline = '') ⇒ Object

Return an array of lines numbers that could be stopped at given a file name of a Ruby program. We assume the each line has n at the end. If not set the newline parameters to n.



37
38
39
40
# File 'lib/tracelines.rb', line 37

def lnums_for_str_array(string_array, newline='')
  str = string_array.join(newline)
  lnums_for_str(str)
end