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
parent of three different magic comment handlers
Parse different formats of magic comments.
Constant Summary
-
KEYWORDS =
# File 'lib/rubocop/magic_comment.rb', line 11{ encoding: '(?:en)?coding', frozen_string_literal: 'frozen[_-]string[_-]literal', rbs_inline: 'rbs_inline', shareable_constant_value: 'shareable[_-]constant[_-]value', typed: 'typed' }.freeze -
TOKEN =
# File 'lib/rubocop/magic_comment.rb', line 10
IRB’s pattern for matching magic comment tokens.
'(?<token>[[:alnum:]\-_]+)'
Class Method Summary
- .new(comment) ⇒ MagicComment constructor
-
.parse(comment) ⇒ RuboCop::MagicComment
Detect magic comment format and pass it to the appropriate wrapper.
Instance Attribute Summary
- #any? ⇒ Boolean readonly
- #encoding_specified? ⇒ Boolean readonly
-
#frozen_string_literal? ⇒ Boolean
readonly
Does the magic comment enable the frozen string literal feature.
-
#frozen_string_literal_specified? ⇒ Boolean
readonly
Was a magic comment for the frozen string literal found?
- #rbs_inline_specified? ⇒ Boolean readonly
-
#shareable_constant_value_specified? ⇒ Boolean
readonly
Was a shareable_constant_value specified?
-
#typed_specified? ⇒ Boolean
readonly
Was the Sorbet #typed sigil specified?
- #valid? ⇒ Boolean readonly
- #valid_literal_value? ⇒ Boolean readonly
- #valid_rbs_inline_value? ⇒ Boolean readonly
- #valid_shareable_constant_value? ⇒ Boolean readonly
Instance Method Summary
-
#frozen_string_literal ⇒ Boolean, ...
readonly
Expose the #frozen_string_literal value coerced to a boolean if possible.
-
#shareable_constant_value ⇒ String
Expose the #shareable_constant_value value coerced to a boolean if possible.
- #typed
-
#extract(pattern) ⇒ String?
private
Match the entire comment string with a pattern and take the first capture.
- #specified?(value) ⇒ Boolean private
Constructor Details
.new(comment) ⇒ MagicComment
# 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.
# 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 ]
# File 'lib/rubocop/magic_comment.rb', line 37
def any? frozen_string_literal_specified? || encoding_specified? || rbs_inline_specified? || shareable_constant_value_specified? || typed_specified? end
#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
# 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?
# 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
#typed_specified? ⇒ Boolean (readonly)
Was the Sorbet #typed sigil specified?
# 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
Instance Method Details
#extract(pattern) ⇒ String? (private)
Match the entire comment string with a pattern and take the first capture.
# File 'lib/rubocop/magic_comment.rb', line 141
def extract(pattern) @comment[pattern, :token] end
#frozen_string_literal ⇒ Boolean, ... (readonly)
Expose the frozen_string_literal value coerced to a boolean if possible.
# 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
#specified?(value) ⇒ Boolean (private)
# 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