Sha256: e581dfa6acb6c3d0e87e6d67a2e5f2678ede3e19fffdc6afe7454820aad2b189

Contents?: true

Size: 881 Bytes

Versions: 13

Compression:

Stored size: 881 Bytes

Contents

module Trackman
  module Components
    module Diffable
      def diff local, remote 
        to_create = local.select{|a| remote.all? { |s| a.path != s.path } }.map{|a| a.to_remote }
        
        { 
          :create => to_create, 
          :update => remote.select{|a| local.any?{ |s| a.path == s.path && a.file_hash != s.file_hash }},  
          :delete => define_deleted(local, remote) do |a| 
            to_create.any?{ |c| c.path.basename == a.path.basename }
          end
        }
      end

      private
        # will not delete an html for now. 
        # this behaviour is to avoid the removal of the default templates.
        def define_deleted local, remote
          to_delete = remote.select do |a| 
            local.all? { |s| s.path != a.path } 
          end

          to_delete.reject{|a| a.path.to_s =~ /.html$/ }.to_a
        end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
trackman-0.6.8 lib/trackman/components/diffable.rb
trackman-0.6.7 lib/trackman/components/diffable.rb
trackman-0.6.6 lib/trackman/components/diffable.rb
trackman-0.6.5 lib/trackman/components/diffable.rb
trackman-0.6.4 lib/trackman/components/diffable.rb
trackman-0.6.3 lib/trackman/components/diffable.rb
trackman-0.6.2 lib/trackman/components/diffable.rb
trackman-0.6.1 lib/trackman/components/diffable.rb
trackman-0.6.0 lib/trackman/components/diffable.rb
trackman-0.5.8 lib/trackman/components/diffable.rb
trackman-0.5.7 lib/trackman/components/diffable.rb
trackman-0.5.6 lib/trackman/components/diffable.rb
trackman-0.5.5 lib/trackman/components/diffable.rb