Bloom_ChorusPlugin.BloomHtmlFileTypeHandler.Do3WayMerge C# (CSharp) Method

Do3WayMerge() public method

Do a 3-file merge, placing the result over the "ours" file and returning an error status
Implementations can exit with an exception, which the caller will catch and deal with. The must not have any UI, no interaction with the user.
public Do3WayMerge ( MergeOrder mergeOrder ) : void
mergeOrder MergeOrder
return void
        public void Do3WayMerge(MergeOrder mergeOrder)
        {
            Guard.AgainstNull(mergeOrder, "mergeOrder");

            if (mergeOrder == null)
                throw new ArgumentNullException("mergeOrder");

            var merger = new XmlMerger(mergeOrder.MergeSituation);
            SetupElementStrategies(merger);

            merger.EventListener = mergeOrder.EventListener;

            using(var oursXml = new HtmlFileForMerging(mergeOrder.pathToOurs))
            using(var theirsXml = new HtmlFileForMerging(mergeOrder.pathToTheirs))
            using (var ancestorXml = new HtmlFileForMerging(mergeOrder.pathToCommonAncestor))
            {
                var result = merger.MergeFiles(oursXml.GetPathToXHtml(), theirsXml.GetPathToXHtml(), ancestorXml.GetPathToXHtml());

                CarefullyWriteOutResultingXml(oursXml, result);

                //now convert back to html
                oursXml.SaveHtml();
            }
        }