Sha256: 4f609da4f31011b687a88890f7bdb465c30b19db4c9e006ddfc43b5146017e5a

Contents?: true

Size: 1.34 KB

Versions: 12

Compression:

Stored size: 1.34 KB

Contents

module LicenseFinder
  class Diff
    def self.compare(f1, f2)
      p1 = Set.new(build_packages(f1))
      p2 = Set.new(build_packages(f2))

      added = p2.difference(p1).to_a
      removed = p1.difference(p2).to_a
      unchanged = p1.intersection(p2).to_a

      [].tap do |packages|
        unchanged.each do |package|
          package_previous = package_with_name(p1, package)
          package_current = package_with_name(p2, package)

          if package_current.licenses == package_previous.licenses
            packages << PackageDelta.unchanged(package_current, package_previous)
          else
            packages << PackageDelta.removed(package_previous)
            packages << PackageDelta.added(package_current)
          end
        end

        added.each    { |package| packages << PackageDelta.added(package) }
        removed.each  { |package| packages << PackageDelta.removed(package) }
      end
    end

    private

    def self.build_packages(content)
      CSV.parse(content).map do |row|
        row.map!(&:strip)
        package = Package.new(row[0], row[1], spec_licenses: [row[2]])
        if row.count == 4
          MergedPackage.new(package, row[3].split(','))
        else
          package
        end
      end
    end

    def self.package_with_name(set, package)
      set.find { |p| p.name == package.name }
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
license_finder-2.1.2 lib/license_finder/diff.rb
license_finder-2.1.1 lib/license_finder/diff.rb
license_finder-2.1.0 lib/license_finder/diff.rb
license_finder-2.1.0.rc9 lib/license_finder/diff.rb
license_finder-2.1.0.rc8 lib/license_finder/diff.rb
license_finder-2.1.0.rc7 lib/license_finder/diff.rb
license_finder-2.1.0.rc6 lib/license_finder/diff.rb
license_finder-2.1.0.rc5 lib/license_finder/diff.rb
license_finder-2.1.0.rc4 lib/license_finder/diff.rb
license_finder-2.1.0.rc3 lib/license_finder/diff.rb
license_finder-2.1.0.rc2 lib/license_finder/diff.rb
license_finder-2.1.0.rc1 lib/license_finder/diff.rb