class Jars::GemspecArtifacts::Artifact

def self.new(line)

def self.new(line)
  line = line.strip
  index = line.index(/\s/)
  return nil if index.nil?
  type = line[0..index].strip
  return nil unless ALLOWED_TYPES.member?(type)
  line = line[index..]
  line.gsub!(/['"]/, '')
  line.strip!
  options = {}
  line.sub!(/,\s*:exclusions\s*(:|=>)\s*(\[[^\]]+\])/) do
    options[:exclusions] = Exclusions.new(Regexp.last_match(2).strip)
    ''
  end
  line.sub!(/,\s*:([a-z]+)\s*(:|=>)\s*(:?[a-zA-Z0-9_]+)/) do
    options[Regexp.last_match(1).to_sym] = Regexp.last_match(3).sub(/^:/, '')
    ''
  end
  exclusions = nil
  line.sub!(/[,:]\s*\[(.+:.+,?\s*)+\]$/) do |a|
    exclusions = Exclusions.new(a[1..].strip)
    ''
  end
  line.strip!
  line.gsub!(/,\s*/, ':')
  if /[\[()\]]/.match?(line)
    index = line.index(/[\[(].+$/)
    version = line[index..].sub(/:/, ', ')
    line = line[0..index - 1].strip.sub(/:$/, '')
  else
    index = line.index(/:[^:]+$/)
    version = line[index + 1..]
    line = line[0..index - 1].strip
  end
  case line.count(':')
  when 2
    group_id, artifact_id, classifier = line.split(':')
  when 1
    group_id, artifact_id = line.split(':')
    classifier = nil
  else
    warn line
    return nil
  end
  super(options, type, group_id, artifact_id, classifier, version, exclusions)
end