123456789_123456789_123456789_123456789_123456789_

Class: RuboCop::MagicComment Abstract

Relationships & Source Files
Namespace Children
Classes:
Extension / Inclusion / Inheritance Descendants
Subclasses:
Inherits: Object
Defined in: lib/rubocop/magic_comment.rb

Overview

This class is abstract.

parent of three different magic comment handlers

Parse different formats of magic comments.

Constant Summary

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(comment) ⇒ MagicComment

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 33

def initialize(comment)
  @comment = comment
end

Class Method Details

.parse(comment) ⇒ MagicComment

Detect magic comment format and pass it to the appropriate wrapper.

Parameters:

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 24

def self.parse(comment)
  case comment
  when EmacsComment::REGEXP then EmacsComment.new(comment)
  when VimComment::REGEXP   then VimComment.new(comment)
  else
    SimpleComment.new(comment)
  end
end

Instance Attribute Details

#any?Boolean (readonly)

[ GitHub ]

#encoding_specified?Boolean (readonly)

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 110

def encoding_specified?
  specified?(encoding)
end

#frozen_string_literal?Boolean (readonly)

Does the magic comment enable the frozen string literal feature.

Test whether the frozen string literal value is true. Cannot just return #frozen_string_literal since an invalid magic comment like # frozen_string_literal: yes is possible and the truthy value 'yes' does not actually enable the feature

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 57

def frozen_string_literal?
  frozen_string_literal == true
end

#frozen_string_literal_specified?Boolean (readonly)

Was a magic comment for the frozen string literal found?

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 76

def frozen_string_literal_specified?
  specified?(frozen_string_literal)
end

#rbs_inline_specified?Boolean (readonly)

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 114

def rbs_inline_specified?
  valid_rbs_inline_value?
end

#shareable_constant_value_specified?Boolean (readonly)

Was a shareable_constant_value specified?

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 83

def shareable_constant_value_specified?
  specified?(shareable_constant_value)
end

#typed_specified?Boolean (readonly)

Was the Sorbet #typed sigil specified?

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 121

def typed_specified?
  specified?(extract_typed)
end

#valid?Boolean (readonly)

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 45

def valid?
  @comment.start_with?('#') && any?
end

#valid_literal_value?Boolean (readonly)

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 61

def valid_literal_value?
  [true, false].include?(frozen_string_literal)
end

#valid_rbs_inline_value?Boolean (readonly)

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 65

def valid_rbs_inline_value?
  %w[enabled disabled].include?(extract_rbs_inline_value)
end

#valid_shareable_constant_value?Boolean (readonly)

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 69

def valid_shareable_constant_value?
  %w[none literal experimental_everything experimental_copy].include?(shareable_constant_value)
end

Instance Method Details

#extract(pattern) ⇒ String? (private)

Match the entire comment string with a pattern and take the first capture.

Parameters:

  • pattern (Regexp)

Returns:

  • (String)

    if pattern matched

  • (nil)

    otherwise

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 141

def extract(pattern)
  @comment[pattern, :token]
end

#frozen_string_literalBoolean, ... (readonly)

Expose the frozen_string_literal value coerced to a boolean if possible.

Returns:

  • (Boolean)

    if value is true or false in any case

  • (nil)

    if frozen_string_literal comment isn’t found

  • (String)

    if comment is found but isn’t true or false

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 92

def frozen_string_literal
  return unless (setting = extract_frozen_string_literal)

  case setting.downcase
  when 'true'  then true
  when 'false' then false
  else
    setting
  end
end

#shareable_constant_valueString

Expose the shareable_constant_value value coerced to a boolean if possible.

Returns:

  • (String)

    for shareable_constant_value config

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 106

def shareable_constant_value
  extract_shareable_constant_value
end

#specified?(value) ⇒ Boolean (private)

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 131

def specified?(value)
  !value.nil?
end

#typed

[ GitHub ]

  
# File 'lib/rubocop/magic_comment.rb', line 125

def typed
  extract_typed
end