Class: RuboCop::Cop::Discourse::Services::GroupKeywords

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Defined in:
lib/rubocop/cop/discourse/services/group_keywords.rb

Overview

Don’t put empty lines between keywords that are not multiline blocks.

Examples:

# bad
model :my_model

policy :my_policy

try { step :might_raise }

# good
model :my_model
policy :my_policy
try { step :might_raise }

Constant Summary collapse

MSG =
"Group one-liner steps together by removing extra empty lines."
RESTRICT_ON_SEND =
%i[step model policy].freeze

Instance Method Summary collapse

Instance Method Details

#on_class(node) ⇒ Object



37
38
39
40
# File 'lib/rubocop/cop/discourse/services/group_keywords.rb', line 37

def on_class(node)
  return unless service_include?(node)
  @service = true
end

#on_send(node) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/rubocop/cop/discourse/services/group_keywords.rb', line 42

def on_send(node)
  return unless service?
  return unless top_level?(node)
  return unless extra_empty_line_after?(node)

  add_offense(node, message: MSG) do |corrector|
    range =
      node.loc.expression.end.with(end_pos: node.right_sibling.loc.expression.begin_pos)
    content = range.source.gsub(/^(\n)+/, "\n")
    corrector.replace(range, content)
  end
end