class Rbexy::Component::BacktraceCleaner
Attributes
backtrace[R]
found_templates[R]
Public Class Methods
new(backtrace)
click to toggle source
# File lib/rbexy/component/backtrace_cleaner.rb, line 6 def initialize(backtrace) @backtrace = backtrace @found_templates = {} end
Public Instance Methods
call()
click to toggle source
# File lib/rbexy/component/backtrace_cleaner.rb, line 11 def call backtrace .reject(&method(:internal_implementation_detail?)) .map(&method(:strip_rbx_internals_block_mention)) end
Private Instance Methods
internal_implementation_detail?(line)
click to toggle source
# File lib/rbexy/component/backtrace_cleaner.rb, line 21 def internal_implementation_detail?(line) if template = template_name_if_rbx_internals(line) redundant_internal_block?(line, template) else internal_method_call?(line) end end
internal_method_call?(line)
click to toggle source
# File lib/rbexy/component/backtrace_cleaner.rb, line 29 def internal_method_call?(line) line =~ /lib\/rbexy\/.*\.rb/ || line =~ /lib\/action_view\/.*\.rb/ || line =~ /lib\/active_support\/notifications\.rb/ end
redundant_internal_block?(line, template)
click to toggle source
# File lib/rbexy/component/backtrace_cleaner.rb, line 35 def redundant_internal_block?(line, template) if found_templates[template] true else found_templates[template] = true false end end
strip_rbx_internals_block_mention(line)
click to toggle source
# File lib/rbexy/component/backtrace_cleaner.rb, line 44 def strip_rbx_internals_block_mention(line) if template_name_if_rbx_internals(line) line.gsub(/block (\(\d+ levels\))? ?in /, "") else line end end
template_name_if_rbx_internals(line)
click to toggle source
# File lib/rbexy/component/backtrace_cleaner.rb, line 52 def template_name_if_rbx_internals(line) if /\/(?<template>[^\/]*)\.rbx:\d+:in `(block |_)/ =~ line template end end