class RuboCop::Cop::Naming::HeredocDelimiterCase

Checks that your heredocs are using the configured case. By default it is configured to enforce uppercase heredocs.

@example EnforcedStyle: uppercase (default)

# bad
<<-sql
  SELECT * FROM foo
sql

# good
<<-SQL
  SELECT * FROM foo
SQL

@example EnforcedStyle: lowercase

# bad
<<-SQL
  SELECT * FROM foo
SQL

# good
<<-sql
  SELECT * FROM foo
sql

Constants

MSG

Public Instance Methods

on_heredoc(node) click to toggle source
# File lib/rubocop/cop/naming/heredoc_delimiter_case.rb, line 37
def on_heredoc(node)
  return if correct_case_delimiters?(node)

  add_offense(node.loc.heredoc_end) do |corrector|
    expr = node.source_range

    corrector.replace(expr, correct_delimiters(expr.source))
    corrector.replace(node.loc.heredoc_end, correct_delimiters(delimiter_string(expr)))
  end
end

Private Instance Methods

correct_case_delimiters?(node) click to toggle source
# File lib/rubocop/cop/naming/heredoc_delimiter_case.rb, line 54
def correct_case_delimiters?(node)
  delimiter_string(node) == correct_delimiters(delimiter_string(node))
end
correct_delimiters(source) click to toggle source
# File lib/rubocop/cop/naming/heredoc_delimiter_case.rb, line 58
def correct_delimiters(source)
  if style == :uppercase
    source.upcase
  else
    source.downcase
  end
end
message(_node) click to toggle source
# File lib/rubocop/cop/naming/heredoc_delimiter_case.rb, line 50
def message(_node)
  format(MSG, style: style)
end