Module: RuboCop::Cop::RSpec::EmptyLineSeparation
- Includes:
- RangeHelp, FinalEndLocation
- Included in:
- EmptyLineAfterExample, EmptyLineAfterExampleGroup, EmptyLineAfterFinalLet, EmptyLineAfterHook, EmptyLineAfterSubject
- Defined in:
- lib/rubocop/cop/rspec/mixin/empty_line_separation.rb
Overview
Helps determine the offending location if there is not an empty line following the node. Allows comments to follow directly after in the following cases.
-
‘rubocop:enable` directive
-
followed by empty line(s)
Instance Method Summary collapse
- #last_child?(node) ⇒ Boolean
- #missing_separating_line(node) {|offending_loc(enable_directive_line || final_end_line)| ... } ⇒ Object
- #missing_separating_line_offense(node) ⇒ Object
- #offending_loc(last_line) ⇒ Object
Methods included from FinalEndLocation
Instance Method Details
#last_child?(node) ⇒ Boolean
51 52 53 54 55 |
# File 'lib/rubocop/cop/rspec/mixin/empty_line_separation.rb', line 51 def last_child?(node) return true unless node.parent&.begin_type? node.equal?(node.parent.children.last) end |
#missing_separating_line(node) {|offending_loc(enable_directive_line || final_end_line)| ... } ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/rubocop/cop/rspec/mixin/empty_line_separation.rb', line 26 def (node) line = final_end_line = final_end_location(node).line while processed_source.line_with_comment?(line + 1) line += 1 comment = processed_source.comment_at_line(line) if DirectiveComment.new(comment).enabled? enable_directive_line = line end end return if processed_source[line].blank? yield offending_loc(enable_directive_line || final_end_line) end |
#missing_separating_line_offense(node) ⇒ Object
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/rubocop/cop/rspec/mixin/empty_line_separation.rb', line 15 def (node) return if last_child?(node) (node) do |location| msg = yield(node.method_name) add_offense(location, message: msg) do |corrector| corrector.insert_after(location.end, "\n") end end end |
#offending_loc(last_line) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/rubocop/cop/rspec/mixin/empty_line_separation.rb', line 41 def offending_loc(last_line) offending_line = processed_source[last_line - 1] content_length = offending_line.lstrip.length start = offending_line.length - content_length source_range(processed_source.buffer, last_line, start, content_length) end |