/// <summary> /// Do a 3-file merge, placing the result over the "ours" file and returning an error status /// </summary> /// <remarks>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.</remarks> 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(); } }
public void SaveHtml_IsHtml() { const string html = @"<html><head></head><body><p>one</body></html>"; using (var htmlFile = new TempFile(html)) { var htmlFileForMerging = new HtmlFileForMerging(htmlFile.Path); var xmlPath = htmlFileForMerging.GetPathToXHtml(); var xml = File.ReadAllText(xmlPath); xml = xml.Replace("one","one<br/>two"); File.WriteAllText(xmlPath, xml); htmlFileForMerging.SaveHtml(); var newHtml = File.ReadAllText(htmlFile.Path); Assert.IsTrue(newHtml.StartsWith("<!DOCTYPE html>")); Assert.IsTrue(newHtml.Contains("two")); } }
/// <summary> /// Do a 3-file merge, placing the result over the "ours" file and returning an error status /// </summary> /// <remarks>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.</remarks> 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(); } }