State.Assembly = current.GetAttribute ("name");
}
- public override void Added (XElement target)
+ public override void Added (XElement target, bool wasParentAdded)
{
// one assembly per xml file
}
Compare (s.Elements ("class"), t.Elements ("class"));
}
- public override void Added (XElement target)
+ public override void Added (XElement target, bool wasParentAdded)
{
string name = target.Attribute ("name").Value;
if (State.IgnoreNew.Any (re => re.IsMatch (name)))
if (t != null) {
Indent ().WriteLine ("\t// constructors");
foreach (var ctor in t.Elements ("constructor"))
- ccomparer.Added (ctor);
+ ccomparer.Added (ctor, true);
}
t = target.Element ("fields");
else
SetContext (target);
foreach (var field in t.Elements ("field"))
- fcomparer.Added (field);
+ fcomparer.Added (field, true);
}
t = target.Element ("properties");
if (t != null) {
Indent ().WriteLine ("\t// properties");
foreach (var property in t.Elements ("property"))
- pcomparer.Added (property);
+ pcomparer.Added (property, true);
}
t = target.Element ("events");
if (t != null) {
Indent ().WriteLine ("\t// events");
foreach (var evnt in t.Elements ("event"))
- ecomparer.Added (evnt);
+ ecomparer.Added (evnt, true);
}
t = target.Element ("methods");
if (t != null) {
Indent ().WriteLine ("\t// methods");
foreach (var method in t.Elements ("method"))
- mcomparer.Added (method);
+ mcomparer.Added (method, true);
}
t = target.Element ("classes");
return State.Output;
}
- public abstract void Added (XElement target);
+ public abstract void Added (XElement target, bool wasParentAdded);
public abstract void Modified (XElement source, XElement target, ApiChanges changes);
public abstract void Removed (XElement source);
if (target != null) {
foreach (var item in target) {
SetContext (item);
- Added (item);
+ Added (item, false);
}
}
}
BeforeAdding (elements);
a = true;
}
- Added (item);
+ Added (item, false);
}
if (a)
AfterAdding ();
Output.WriteLine ("<pre>");
}
- public override void Added (XElement target)
+ public override void Added (XElement target, bool wasParentAdded)
{
var o = GetObsoleteMessage (target);
if (!first && (o.Length > 0))
Output.WriteLine ();
Indent ();
- bool isInterface = IsInInterface (target);
- Output.Write ("\t<span class='added added-{0} {1}' {2}>", ElementName, isInterface ? "breaking" : string.Empty, isInterface ? "data-is-breaking" : "data-is-non-breaking");
+ bool isInterfaceBreakingChange = !wasParentAdded && IsInInterface (target);
+ Output.Write ("\t<span class='added added-{0} {1}' {2}>", ElementName, isInterfaceBreakingChange ? "breaking" : string.Empty, isInterfaceBreakingChange ? "data-is-breaking" : "data-is-non-breaking");
Output.Write ("{0}{1}", o, GetDescription (target));
Output.WriteLine ("</span>");
first = false;
State.Namespace = current.Attribute ("name").Value;
}
- public override void Added (XElement target)
+ public override void Added (XElement target, bool wasParentAdded)
{
string name = target.Attribute ("name").Value;
if (State.IgnoreNew.Any (re => re.IsMatch (name)))
Output.WriteLine ();
// list all new types
foreach (var addedType in target.Element ("classes").Elements ("class"))
- comparer.Added (addedType);
+ comparer.Added (addedType, true);
Output.WriteLine ("</div> <!-- end namespace {0} -->", name);
Output.WriteLine ();
}