summaryrefslogtreecommitdiff
path: root/rubocop/cop/line_break_around_conditional_block.rb
diff options
context:
space:
mode:
Diffstat (limited to 'rubocop/cop/line_break_around_conditional_block.rb')
-rw-r--r--rubocop/cop/line_break_around_conditional_block.rb132
1 files changed, 0 insertions, 132 deletions
diff --git a/rubocop/cop/line_break_around_conditional_block.rb b/rubocop/cop/line_break_around_conditional_block.rb
deleted file mode 100644
index 2523cc162f3..00000000000
--- a/rubocop/cop/line_break_around_conditional_block.rb
+++ /dev/null
@@ -1,132 +0,0 @@
-# frozen_string_literal: true
-
-module RuboCop
- module Cop
- # Ensures a line break around conditional blocks.
- #
- # @example
- # # bad
- # do_something
- # if condition
- # do_extra_stuff
- # end
- # do_something_more
- #
- # # good
- # do_something
- #
- # if condition
- # do_extra_stuff
- # end
- #
- # do_something_more
- #
- # # bad
- # do_something
- # unless condition
- # do_extra_stuff
- # end
- #
- # do_something_more
- #
- # # good
- # def a_method
- # if condition
- # do_something
- # end
- # end
- #
- # # good
- # on_block do
- # if condition
- # do_something
- # end
- # end
- class LineBreakAroundConditionalBlock < RuboCop::Cop::Cop
- include RangeHelp
-
- MSG = 'Add a line break around conditional blocks'
-
- def on_if(node)
- # This cop causes errors in haml files, so let's skip those
- return if in_haml?(node)
- return if node.single_line?
- return unless node.if? || node.unless?
-
- add_offense(node, location: :expression, message: MSG) unless previous_line_valid?(node)
- add_offense(node, location: :expression, message: MSG) unless last_line_valid?(node)
- end
-
- def autocorrect(node)
- lambda do |corrector|
- line = range_by_whole_lines(node.source_range)
- unless previous_line_valid?(node)
- corrector.insert_before(line, "\n")
- end
-
- unless last_line_valid?(node)
- corrector.insert_after(line, "\n")
- end
- end
- end
-
- private
-
- def previous_line_valid?(node)
- previous_line(node).empty? ||
- start_clause_line?(previous_line(node)) ||
- block_start?(previous_line(node)) ||
- begin_line?(previous_line(node)) ||
- assignment_line?(previous_line(node)) ||
- rescue_line?(previous_line(node))
- end
-
- def last_line_valid?(node)
- last_line(node).empty? ||
- end_line?(last_line(node)) ||
- end_clause_line?(last_line(node))
- end
-
- def previous_line(node)
- processed_source[node.loc.line - 2]
- end
-
- def last_line(node)
- processed_source[node.loc.last_line]
- end
-
- def start_clause_line?(line)
- line =~ /^\s*(def|=end|#|module|class|if|unless|else|elsif|ensure|when)/
- end
-
- def end_clause_line?(line)
- line =~ /^\s*(#|rescue|else|elsif|when)/
- end
-
- def begin_line?(line)
- # an assignment followed by a begin or ust a begin
- line =~ /^\s*(@?(\w|\|+|=|\[|\]|\s)+begin|begin)/
- end
-
- def assignment_line?(line)
- line =~ /^\s*.*=/
- end
-
- def rescue_line?(line)
- line =~ /^\s*rescue/
- end
-
- def block_start?(line)
- line.match(/ (do|{)( \|.*?\|)?\s?(#.+)?\z/)
- end
-
- def end_line?(line)
- line =~ /^\s*(end|})/
- end
-
- def in_haml?(node)
- node.location.expression.source_buffer.name.end_with?('.haml.rb')
- end
- end
- end
-end