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