Sha256: 375296410d073130bf0fd38eef06892263523cf32c4c4de14d89a94b9dc1e953
Contents?: true
Size: 1.11 KB
Versions: 4
Compression:
Stored size: 1.11 KB
Contents
require 'forwardable' module Dandelion class Diff extend Forwardable include Enumerable def_delegator :@target, :empty? def_delegator :@target, :each attr_reader :from_commit, :to_commit def initialize(from_commit, to_commit) @from_commit = from_commit @to_commit = to_commit if from_commit.nil? @target = FullDiff.new(to_commit.diff(nil)) else @target = PartialDiff.new(from_commit.diff(to_commit)) end end end private class PartialDiff def initialize(diff) @deltas = diff.deltas end def empty? @deltas.empty? end def each deletes, writes = @deltas.partition(&:deleted?) deletes.each { |delta| yield Change.new(delta.old_file[:path], :delete) } writes.each { |delta| yield Change.new(delta.new_file[:path], :write) } end end class FullDiff def initialize(diff) @deltas = diff.patches.map(&:delta) end def empty? @deltas.empty? end def each @deltas.each do |delta| yield Change.new(delta.new_file[:path], :write) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
dandelion-0.5.2 | lib/dandelion/diff.rb |
dandelion-0.5.1 | lib/dandelion/diff.rb |
dandelion-0.5.0 | lib/dandelion/diff.rb |
dandelion-0.4.17 | lib/dandelion/diff.rb |