class RuboCop::Cop::Rails::StripHeredoc


EOS
some text
<<~EOS
# good
EOS
some text
<<-EOS.strip_heredoc
# bad
EOS
some text
<<EOS.strip_heredoc
# bad
@example
Enforces the use of squiggly heredoc over ‘strip_heredoc`.

def on_send(node)

def on_send(node)
  return unless (receiver = node.receiver)
  return unless receiver.type?(:str, :dstr)
  return unless receiver.respond_to?(:heredoc?) && receiver.heredoc?
  register_offense(node, receiver)
end

def register_offense(node, heredoc)

def register_offense(node, heredoc)
  add_offense(node) do |corrector|
    squiggly_heredoc = heredoc.source.sub(/\A<<(-|~)?/, '<<~')
    corrector.replace(heredoc, squiggly_heredoc)
    corrector.remove(node.loc.dot)
    corrector.remove(node.loc.selector)
  end
end