2 using System.Collections.Generic;
6 namespace Xamarin.ApiDiff
11 public StringBuilder Member = new StringBuilder ();
13 public bool AnyChange;
14 public bool HasIgnoredChanges;
16 public ApiChange Append (string text)
22 public ApiChange AppendAdded (string text, bool breaking = false)
25 Member.Append ("<span style='text-decoration: underline'>");
27 Member.Append ("<span style='color:green'>");
30 Member.Append ("</span>");
32 Member.Append ("</span>");
38 public ApiChange AppendRemoved (string text, bool breaking = true)
40 Member.Append ("<span style='text-decoration: line-through'>");
41 if (State.Colorize && breaking)
42 Member.Append ("<span style='color:red'>");
44 if (State.Colorize && breaking)
45 Member.Append ("</span>");
46 Member.Append ("</span>");
52 public ApiChange AppendModified (string old, string @new, bool breaking = true)
55 AppendRemoved (old, breaking);
56 if (old.Length > 0 && @new.Length > 0)
66 public class ApiChanges : Dictionary<string, List<ApiChange>> {
67 public void Add (XElement source, XElement target, ApiChange change)
69 if (!change.AnyChange) {
70 // This is most likely because the rendering doesn't take into account something that's different (solution: fix rendering).
71 if (!change.HasIgnoredChanges) {
72 var isField = source.Name.LocalName == "field";
74 Console.WriteLine ("Comparison resulting in no changes (src: {2} dst: {3}) :\n{0}\n{1}\n\n", source.ToString (), target.ToString (), source.GetFieldAttributes (), target.GetFieldAttributes ());
76 Console.WriteLine ("Comparison resulting in no changes (src: {2} dst: {3}) :\n{0}\n{1}\n\n", source.ToString (), target.ToString (), source.GetMethodAttributes (), target.GetMethodAttributes ());
83 if (!TryGetValue (change.Header, out list)) {
84 list = new List<ApiChange> ();
85 base.Add (change.Header, list);