class RuboCop::Cop::Discourse::Services::GroupKeywords
try { step :might_raise }
policy :my_policy
model :my_model
# good
try { step :might_raise }
policy :my_policy
model :my_model
# bad
@example
Don’t put empty lines between keywords that are not multiline blocks.
def extra_empty_line_after?(node)
def extra_empty_line_after?(node) processed_source[node.loc.expression.line].blank? && ( service_keyword?(node.right_sibling) || single_line_block?(node.right_sibling) ) end
def on_class(node)
def on_class(node) return unless service_include?(node) @service = true end
def on_send(node)
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
def service?
def service? @service end
def service_keyword?(node)
def service_keyword?(node) return unless node node.send_type? && RESTRICT_ON_SEND.include?(node.method_name) end
def single_line_block?(node)
def single_line_block?(node) return unless node node.block_type? && node.single_line? end
def top_level?(node)
def top_level?(node) while (!node.root?) node = node.parent return if %i[begin class block].exclude?(node.type) end true end