Class: Rcr::GemParser

Inherits:
Object
  • Object
show all
Defined in:
lib/rcr/gem_parser.rb

Class Method Summary collapse

Class Method Details

.convert_gem_list(string) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/rcr/gem_parser.rb', line 6

def self.convert_gem_list(string)
  gems = []
  string.each_line do |line|
    name = parse_name(line)
    next unless name
    versions = parse_versions(line)
    platforms = parse_platforms(line)
    if versions.empty?
      gems << OpenStruct.new(:name => name, :platforms => platforms)
    else 
      versions.each do |version|
        gems << OpenStruct.new(:name => name, :version => version.strip, :platforms => platforms)
      end
    end
  end
  gems
end

.parse_name(string) ⇒ Object



24
25
26
27
# File 'lib/rcr/gem_parser.rb', line 24

def self.parse_name(string)
  result = string.gsub(/#.*/, "").match(/[\w\-_]*/)[0]
  result != "" ? result : nil
end

.parse_platforms(string) ⇒ Object



36
37
38
39
# File 'lib/rcr/gem_parser.rb', line 36

def self.parse_platforms(string)
  platforms = string.scan(/\+[\w-]+\b/).map! { |platform| platform.gsub!('+', '') }
  platforms.empty? ? nil : platforms
end

.parse_versions(string) ⇒ Object



29
30
31
32
33
34
# File 'lib/rcr/gem_parser.rb', line 29

def self.parse_versions(string)
  output = string.scan(/\((.*?)\)/).flatten
  output = output.map {|s| s.split(",") }.flatten
  output = output.map {|s| s.strip}
  output
end