Class: AnnotateRb::ModelAnnotator::MagicCommentParser

Inherits:
Object
  • Object
show all
Defined in:
lib/annotate_rb/model_annotator/magic_comment_parser.rb

Overview

Extracts magic comments strings and returns them

Constant Summary collapse

MAGIC_COMMENTS =
[
  HASH_ENCODING = /(^#\s*encoding:.*(?:\n|r\n))/,
  HASH_CODING = /(^# coding:.*(?:\n|\r\n))/,
  HASH_FROZEN_STRING = /(^#\s*frozen_string_literal:.+(?:\n|\r\n))/,
  STAR_ENCODING = /(^# -\*- encoding\s?:.*(?:\n|\r\n))/,
  STAR_CODING = /(^# -\*- coding:.*(?:\n|\r\n))/,
  STAR_FROZEN_STRING = /(^# -\*- frozen_string_literal\s*:.+-\*-(?:\n|\r\n))/,
  SORBET_TYPED_STRING = /(^#\s*typed:.*(?:\n|r\n))/.freeze
].freeze
MAGIC_COMMENTS_REGEX =
Regexp.union(*MAGIC_COMMENTS).freeze

Class Method Summary collapse

Class Method Details

.call(content) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/annotate_rb/model_annotator/magic_comment_parser.rb', line 20

def call(content)
  magic_comments = content.scan(MAGIC_COMMENTS_REGEX).flatten.compact

  if magic_comments.any?
    magic_comments.join
  else
    ""
  end
end