Module: RSpec::Covers::SourceRange
- Defined in:
- lib/rspec/covers/source_range.rb
Class Method Summary collapse
- .ast_last_line(callable) ⇒ Object
- .last_line(callable) ⇒ Object
- .method_source_last_line(callable) ⇒ Object
Class Method Details
.ast_last_line(callable) ⇒ Object
12 13 14 15 16 17 18 |
# File 'lib/rspec/covers/source_range.rb', line 12 def ast_last_line(callable) return unless defined?(RubyVM::AbstractSyntaxTree) RubyVM::AbstractSyntaxTree.of(callable).last_lineno rescue ArgumentError, RuntimeError, TypeError nil end |
.last_line(callable) ⇒ Object
8 9 10 |
# File 'lib/rspec/covers/source_range.rb', line 8 def last_line(callable) ast_last_line(callable) || method_source_last_line(callable) end |
.method_source_last_line(callable) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/rspec/covers/source_range.rb', line 20 def method_source_last_line(callable) source_location = callable.source_location return unless source_location require "method_source" return unless callable.respond_to?(:source) source_location.last + callable.source.lines.length - 1 rescue LoadError, ArgumentError nil rescue StandardError => error raise unless defined?(MethodSource::SourceNotFoundError) && error.is_a?(MethodSource::SourceNotFoundError) nil end |