Module: TraceLineNumbers
- Defined in:
- lib/tracelines.rb
Class Method Summary collapse
- .compiled_methods(cm) ⇒ Object
- .lnums_for_compiled_methods(compiled_method) ⇒ Object
-
.lnums_for_file(file) ⇒ Object
Return an array of lines numbers that could be stopped at given a file name of a Ruby program.
-
.lnums_for_lines(lines) ⇒ Object
Get line numbers for CompiledMethod.method#lines format is: ip line ip line …
- .lnums_for_str(str) ⇒ Object
-
.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.
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 |