Module: LicenseFinder::License::Text

Defined in:
lib/license_finder/license/text.rb

Constant Summary collapse

SPACES =
/\s+/.freeze
QUOTES =
/['`"]{1,2}/.freeze
YEAR_PLACEHOLDERS =
/<year>/.freeze
PLACEHOLDERS =
/<[^<>]+>/.freeze
SPECIAL_SINGLE_QUOTES =
/[‘’]/.freeze
SPECIAL_DOUBLE_QUOTES =
/[“”„«»]/.freeze
ALPHABET_ORDERED_LIST =
/\\\([a-z]\\\)\\\s/.freeze
ALPHABET_ORDERED_LIST_OPTIONAL =
'(\([a-z]\)\s)?'
LIST_BULLETS =
/(\d{1,2}\\\.|\\\*|\\-)\\\s/.freeze
LIST_BULLETS_OPTIONAL =
'(\d{1,2}.|\*|\-)?\s*'
NEWLINE_CHARACTER =
/\n+/.freeze
QUOTE_COMMENT_CHARACTER =
/^\s*>+/.freeze
ESCAPED_QUOTES =
/\\"/.freeze
SPECIAL_CHARACTERS =
/§/.freeze
SPECIAL_DASHES =
//.freeze

Class Method Summary collapse

Class Method Details

.compile_to_regex(text) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/license_finder/license/text.rb', line 38

def self.compile_to_regex(text)
  Regexp.new(Regexp.escape(normalize_punctuation(text))
                 .gsub(YEAR_PLACEHOLDERS, '(\S*)')
                 .gsub(PLACEHOLDERS, '(.*)')
                 .gsub(',', '(,)?')
                 .gsub('HOLDER', '(HOLDER|OWNER)')
                 .gsub(ALPHABET_ORDERED_LIST, ALPHABET_ORDERED_LIST_OPTIONAL)
                 .gsub(LIST_BULLETS, LIST_BULLETS_OPTIONAL))
end

.normalize_punctuation(text) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/license_finder/license/text.rb', line 22

def self.normalize_punctuation(text)
  text.dup.force_encoding('UTF-8')
      .gsub(SPECIAL_DOUBLE_QUOTES, '"')
      .gsub(SPECIAL_SINGLE_QUOTES, "'")
      .gsub(QUOTE_COMMENT_CHARACTER, '')
      .gsub(SPACES, ' ')
      .gsub(NEWLINE_CHARACTER, ' ')
      .gsub(ESCAPED_QUOTES, '"')
      .gsub(QUOTES, '"')
      .gsub(SPECIAL_CHARACTERS, '?')
      .gsub(SPECIAL_DASHES, '-')
      .strip
rescue ArgumentError => _e
  text
end