class Gem::Comparator::SpecComparator

Gem::Comparator::SpecComparator can compare values from the gem verions specs

Public Instance Methods

compare(specs, report, options = {}) click to toggle source

Compare common fields in spec

# File lib/rubygems/comparator/spec_comparator.rb, line 14
def compare(specs, report, options = {})
  info 'Checking spec parameters...'
  p = options[:param]
  b = options[:brief]

  filter_params(SPEC_PARAMS, p, b).each do |param|
    values = values_from_specs(param, specs)

    if same_values?(values) && options[:log_all]
      v = value(values[0])
      report[param].section do
        set_header "#{self.same} #{param}:"
        puts v
      end
    elsif !same_values?(values)
      report[param].set_header "#{different} #{param}:"
      values.each_with_index do |value, index|
        report[param] << \
          "#{Rainbow(specs[index].version).cyan}: #{value}"
      end
    end
  end
  report
end

Private Instance Methods

same_values?(values) click to toggle source
# File lib/rubygems/comparator/spec_comparator.rb, line 60
def same_values?(values)
  values.count(values[0]) == values.size
end
value(value) click to toggle source
# File lib/rubygems/comparator/spec_comparator.rb, line 41
def value(value)
  case value
  when Gem::Requirement
    unless value.requirements.empty?
      r = value.requirements[0]
      "#{r[0]} #{r[1].version} "
    else
      '[]'
    end
  when Gem::Platform
    value.to_s
  when String
    return value unless value.empty?
    ''
  else
    value.inspect
  end
end