class RuboCop::MagicComment
Parse different formats of magic comments.
@abstract parent of three different magic comment handlers
Constants
- KEYWORDS
- TOKEN
-
IRB’s pattern for matching magic comment tokens. @see github.com/ruby/ruby/blob/b4a55c1/lib/irb/magic-file.rb#L5
Public Class Methods
Source
# File lib/rubocop/magic_comment.rb, line 32 def initialize(comment) @comment = comment end
Source
# 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
Detect magic comment format and pass it to the appropriate wrapper.
@param comment [String]
@return [RuboCop::MagicComment]
Public Instance Methods
Source
# File lib/rubocop/magic_comment.rb, line 36 def any? frozen_string_literal_specified? || encoding_specified? || shareable_constant_value_specified? || typed_specified? end
Source
# File lib/rubocop/magic_comment.rb, line 104 def encoding_specified? specified?(encoding) end
Source
# 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
Expose the ‘frozen_string_literal` value coerced to a boolean if possible.
@return [Boolean] if value is ‘true` or `false` in any case @return [nil] if frozen_string_literal
comment isn’t found @return [String] if comment is found but isn’t true or false
Source
# File lib/rubocop/magic_comment.rb, line 55 def frozen_string_literal? frozen_string_literal == true end
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
@return [Boolean]
Source
# File lib/rubocop/magic_comment.rb, line 70 def frozen_string_literal_specified? specified?(frozen_string_literal) end
Was a magic comment for the frozen string literal found?
@return [Boolean]
Source
# File lib/rubocop/magic_comment.rb, line 111 def typed_specified? specified?(extract_typed) end
Was the Sorbet ‘typed` sigil specified?
@return [Boolean]
Source
# File lib/rubocop/magic_comment.rb, line 43 def valid? @comment.start_with?('#') && any? end
Source
# File lib/rubocop/magic_comment.rb, line 59 def valid_literal_value? [true, false].include?(frozen_string_literal) end
Private Instance Methods
Source
# File lib/rubocop/magic_comment.rb, line 131 def extract(pattern) @comment[pattern, :token] end
Match the entire comment string with a pattern and take the first capture.
@param pattern [Regexp]
@return [String] if pattern matched @return [nil] otherwise
Source
# File lib/rubocop/magic_comment.rb, line 121 def specified?(value) !value.nil? end