Class: KeepUp::GemfileFilter

Inherits:
FileFilter show all
Defined in:
lib/keep_up/gemfile_filter.rb

Overview

Filter to update dependency information in a Gemfile.

Class Method Summary collapse

Methods inherited from FileFilter

apply_to_file

Class Method Details

.apply(contents, dependency) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/keep_up/gemfile_filter.rb', line 8

def self.apply(contents, dependency)
  matcher = dependency_matcher(dependency)
  contents.each_line.map do |line|
    if line =~ matcher
      match = Regexp.last_match
      "#{match[1]}#{dependency.version}#{match[2]}"
    else
      line
    end
  end.join
end

.dependency_matcher(dependency) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/keep_up/gemfile_filter.rb', line 20

def self.dependency_matcher(dependency)
  /
    ^(\s*gem\s+['"]#{dependency.name}['"],
    \s+\[?['"](?:~>|=)?\ *)
    [^'"]*
    (['"]\]?[^\]]*)
    $
  /mx
end