private static void WriteElement(string name, TextWriter output, XElement d, bool fullelements, XDiffAction action) { if (d.Name.LocalName == "update" || d.Name.LocalName == "insert") { output.WriteLine("\t" + name + " : (" + d.ToString().Replace("(", "\\(").Replace(")", "\\)") + ")"); return; } fullelements = fullelements || (name == "NewestElement" && action == XDiffAction.CreateElement); if (fullelements) { output.WriteLine("\t" + name + " : (" + d.ToString().Replace("(", "\\(").Replace(")", "\\)") + ")"); } else { var attr = d.Attribute("id"); if (null == attr) { attr = d.Attribute("code"); } var p = d.Attribute("__parent"); output.Write("\t" + name + " name=" + d.Name.LocalName + " " + attr.Name + "=" + attr.Value.Escape(EscapingType.BxlStringOrLiteral)); if (null != p) { output.Write(" parent=" + p.Value.Escape(EscapingType.BxlStringOrLiteral)); } if (name == "NewestElement" && action == XDiffAction.ChangeElement) { output.Write(" : "); output.Write(d.Value.Escape(EscapingType.BxlStringOrLiteral)); } output.WriteLine(); } }
private static IEnumerable <XDiffItem> ProcessCollector(XDiffMatch xd, XElement create_collector, XDiffAction action) { var len = create_collector.Attributes().Count(); if (len != 0) { if (len == 1) { yield return (new XDiffItem { Action = action, BasisElement = xd.b, NewestAttribute = create_collector.Attributes().First() }); } else { yield return(new XDiffItem { Action = action, BasisElement = xd.b, NewestElement = create_collector }); } } }