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', shareable_constant_value: 'shareable[_-]constant[_-]value', typed: 'typed' }.freeze
-
TOKEN =
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?
-
#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_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 32
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 23
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 36
def any? frozen_string_literal_specified? || encoding_specified? || shareable_constant_value_specified? || typed_specified? end
#encoding_specified? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/rubocop/magic_comment.rb', line 104
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 55
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 70
def frozen_string_literal_specified? specified?(frozen_string_literal) end
#typed_specified? ⇒ Boolean
(readonly)
Was the Sorbet #typed sigil specified?
# File 'lib/rubocop/magic_comment.rb', line 111
def typed_specified? specified?(extract_typed) end
#valid? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/rubocop/magic_comment.rb', line 43
def valid? @comment.start_with?('#') && any? end
#valid_literal_value? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/rubocop/magic_comment.rb', line 59
def valid_literal_value? [true, false].include?(frozen_string_literal) 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 131
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 86
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 121
def specified?(value) !value.nil? end
#typed
[ GitHub ]# File 'lib/rubocop/magic_comment.rb', line 115
def typed extract_typed end