class RSpec::Expectations::BlockSnippetExtractor
@private
Constants
- AmbiguousTargetError
- BlockLocator
-
@private Locates target block with node information (semantics), which tokens don’t have.
- BlockTokenExtractor
-
@private Performs extraction of block body snippet using tokens, which cannot be done with node information.
- Error
- TargetNotFoundError
Attributes
rubocop should properly handle ‘Struct.new {}` as an inner class definition.
rubocop should properly handle ‘Struct.new {}` as an inner class definition.
Public Class Methods
# File rspec-expectations/lib/rspec/expectations/block_snippet_extractor.rb, line 17 def initialize(proc, method_name) @proc = proc @method_name = method_name.to_s.freeze end
# File rspec-expectations/lib/rspec/expectations/block_snippet_extractor.rb, line 9 def self.try_extracting_single_line_body_of(proc, method_name) lines = new(proc, method_name).body_content_lines return nil unless lines.count == 1 lines.first rescue Error nil end
Public Instance Methods
Ideally we should properly handle indentations of multiline snippet, but it’s not implemented yet since because we use result of this method only when it’s a single line and implementing the logic introduces additional complexity.
# File rspec-expectations/lib/rspec/expectations/block_snippet_extractor.rb, line 25 def body_content_lines raw_body_lines.map(&:strip).reject(&:empty?) end