class RubbyCop::Cop::Layout::LeadingCommentSpace

This cop checks whether comments have a leading space after the # denoting the start of the comment. The leading space is not required for some RDoc special syntax, like ++, –, #:nodoc, etc. Neither is it required for

begin/=end comments.

Constants

MSG

Public Instance Methods

autocorrect(comment) click to toggle source
# File lib/rubbycop/cop/layout/leading_comment_space.rb, line 28
def autocorrect(comment)
  expr = comment.loc.expression
  b = expr.begin_pos
  hash_mark = range_between(b, b + 1)
  ->(corrector) { corrector.insert_after(hash_mark, ' ') }
end
investigate(processed_source) click to toggle source
# File lib/rubbycop/cop/layout/leading_comment_space.rb, line 14
def investigate(processed_source)
  processed_source.comments.each do |comment|
    next unless comment.text =~ /\A#+[^#\s=:+-]/
    next if comment.text.start_with?('#!') && comment.loc.line == 1

    # in config.ru files, if the first line starts with #\ it is treated
    # as options (e.g. `#\ -p 8765` sets the request port to 8765)
    next if comment.text.start_with?('#\\') && comment.loc.line == 1 &&
            config_ru?(processed_source.buffer.name)

    add_offense(comment, :expression)
  end
end

Private Instance Methods

config_ru?(file_path) click to toggle source
# File lib/rubbycop/cop/layout/leading_comment_space.rb, line 37
def config_ru?(file_path)
  File.basename(file_path).eql?('config.ru')
end