Class: Rcr::GemParser
- Inherits:
-
Object
- Object
- Rcr::GemParser
- Defined in:
- lib/rcr/gem_parser.rb
Class Method Summary collapse
- .convert_gem_list(string) ⇒ Object
- .parse_name(string) ⇒ Object
- .parse_platforms(string) ⇒ Object
- .parse_versions(string) ⇒ Object
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 |