Module: Stackify::Backtrace
- Defined in:
- lib/stackify/utils/backtrace.rb
Constant Summary collapse
- ALL_TEXT_FROM_START_TO_FIRST_COLON_REGEXP =
/\A([^:]+)/- NUMBER_BETWEEN_TWO_COLONS_REGEXP =
/:(\d+):/- TEXT_AFTER_IN_BEFORE_END_REGEXP =
/in\s`(\S+)'\z/- TEXT_AFTER_IN_BEFORE_END_REGEXP_ =
/in\s(\S+)'\z/
Class Method Summary collapse
- .backtrace_in_line(backtrace) ⇒ Object
- .file_name(backtrace_str) ⇒ Object
- .line_number(backtrace_str) ⇒ Object
- .method_name(backtrace_str) ⇒ Object
- .stacktrace(depth = 5, backtrace) ⇒ Object
Class Method Details
.backtrace_in_line(backtrace) ⇒ Object
34 35 36 |
# File 'lib/stackify/utils/backtrace.rb', line 34 def self.backtrace_in_line backtrace backtrace.join("\n") end |
.file_name(backtrace_str) ⇒ Object
17 18 19 |
# File 'lib/stackify/utils/backtrace.rb', line 17 def self.file_name backtrace_str backtrace_str[ALL_TEXT_FROM_START_TO_FIRST_COLON_REGEXP, 1] end |
.line_number(backtrace_str) ⇒ Object
8 9 10 |
# File 'lib/stackify/utils/backtrace.rb', line 8 def self.line_number backtrace_str backtrace_str[NUMBER_BETWEEN_TWO_COLONS_REGEXP, 1] end |
.method_name(backtrace_str) ⇒ Object
12 13 14 15 |
# File 'lib/stackify/utils/backtrace.rb', line 12 def self.method_name backtrace_str return nil unless backtrace_str backtrace_str[TEXT_AFTER_IN_BEFORE_END_REGEXP, 1] || backtrace_str[TEXT_AFTER_IN_BEFORE_END_REGEXP_, 1] end |
.stacktrace(depth = 5, backtrace) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/stackify/utils/backtrace.rb', line 21 def self.stacktrace depth=5, backtrace return nil unless backtrace new_backtrace = [] backtrace.take(depth).each do |line| new_backtrace << { 'LineNum' => line_number(line), 'Method' => method_name(line), 'CodeFileName' => file_name(line) } end new_backtrace end |