Sha256: f90668ef9175fe7a85c0f35d392e26909e668011539941aca517288f9e02c7dd
Contents?: true
Size: 1.43 KB
Versions: 1
Compression:
Stored size: 1.43 KB
Contents
require 'gemnasium/parser' module Bibliothecary module Parsers class Rubygems include Bibliothecary::Analyser NAME_VERSION = '(?! )(.*?)(?: \(([^-]*)(?:-(.*))?\))?'.freeze NAME_VERSION_4 = /^ {4}#{NAME_VERSION}$/ def self.mapping { /^Gemfile$|^gems\.rb$|.*\/Gemfile$|.*\/gems\.rb$/ => { kind: 'manifest', parser: :parse_gemfile }, /^[A-Za-z0-9_-]+\.gemspec$|.*\/[A-Za-z0-9_-]+\.gemspec$/ => { kind: 'manifest', parser: :parse_gemspec }, /^Gemfile\.lock$|^gems\.locked$|.*\/gems\.locked$|.*\/Gemfile\.lock$/ => { kind: 'lockfile', parser: :parse_gemfile_lock } } end def self.parse_gemfile_lock(manifest) manifest.split("\n").map do |line| match = line.match(NAME_VERSION_4) next unless match name = match[1] version = match[2].gsub(/\(|\)/,'') { name: name, requirement: version, type: 'runtime' } end.compact end def self.parse_gemfile(file_contents) manifest = Gemnasium::Parser.send(:gemfile, file_contents) parse_ruby_manifest(manifest) end def self.parse_gemspec(file_contents) manifest = Gemnasium::Parser.send(:gemspec, file_contents) parse_ruby_manifest(manifest) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bibliothecary-6.3.0 | lib/bibliothecary/parsers/rubygems.rb |