module Dyph::Support::Collater

Public Instance Methods

collate_merge(merge_result, join_function, conflict_handler) click to toggle source
# File lib/dyph/support/collater.rb, line 5
def collate_merge(merge_result, join_function, conflict_handler)
  if merge_result.empty?
    Dyph::MergeResult.new([Outcome::Resolved.new([])], join_function)
  else
    merge_result = combine_non_conflicts(merge_result)
    if (merge_result.length == 1 && merge_result.first.resolved?)
      Dyph::MergeResult.new(merge_result, join_function)
    else
      Dyph::MergeResult.new(merge_result, join_function, conflict: true, conflict_handler: conflict_handler)
    end
  end
end

Private Instance Methods

combine_non_conflicts(results) click to toggle source

@param [in] results @return the list of conflicts with contiguous parts merged if they are non_conflicts

# File lib/dyph/support/collater.rb, line 21
def combine_non_conflicts(results)
  results.reduce([]) do |rs, r|
    if rs.any? && rs.last.resolved? && r.resolved?
      rs.last.combine(r)
    else
      rs << r
    end
    rs
  end
end