public override string GetDescription (XElement e) { var sb = new StringBuilder (); var attribs = e.Attribute ("attrib"); if (attribs != null) { var attr = (MethodAttributes) Int32.Parse (attribs.Value); if ((attr & MethodAttributes.Public) != MethodAttributes.Public) { sb.Append ("protected "); } else { sb.Append ("public "); } if ((attr & MethodAttributes.Static) != 0) { sb.Append ("static "); } else if ((attr & MethodAttributes.Virtual) != 0) { if ((attr & MethodAttributes.VtableLayoutMask) == 0) sb.Append ("override "); else sb.Append ("virtual "); } } string name = e.GetAttribute ("name"); var r = e.GetTypeName ("returntype"); if (r != null) { // ctor dont' have a return type sb.Append (r).Append (' '); } else { // show the constructor as it would be defined in C# name = name.Replace (".ctor", State.Type); } // the XML file `name` does not contain parameter names, so we must process them ourselves // which gives us the opportunity to simplify type names sb.Append (name.Substring (0, name.IndexOf ('('))); var genericp = e.Element ("generic-parameters"); if (genericp != null) { var list = new List<string> (); foreach (var p in genericp.Elements ("generic-parameter")) { list.Add (p.GetTypeName ("name")); } sb.Append ("<").Append (String.Join (", ", list)).Append (">"); } sb.Append (" ("); var parameters = e.Element ("parameters"); if (parameters != null) { var list = new List<string> (); foreach (var p in parameters.Elements ("parameter")) { list.Add (p.GetTypeName ("type") + " " + p.GetAttribute ("name")); } sb.Append (String.Join (", ", list)); } sb.Append (");"); return sb.ToString (); }
public override string GetDescription (XElement e) { StringBuilder sb = new StringBuilder (); // TODO: attribs sb.Append ("public event "); sb.Append (e.GetTypeName ("eventtype")).Append (' '); sb.Append (e.GetAttribute ("name")).Append (';'); return sb.ToString (); }
void RenderReturnType (XElement source, XElement target, ApiChange change) { var srcType = source.GetTypeName ("returntype"); var tgtType = target.GetTypeName ("returntype"); if (srcType != tgtType) { change.AppendModified (srcType, tgtType, true); change.Append (" "); } else if (srcType != null) { // ctor don't have a return type change.Append (srcType); change.Append (" "); } }
public override string GetDescription (XElement e) { string name = e.Attribute ("name").Value; string ptype = e.GetTypeName ("ptype"); bool virt = false; bool over = false; bool stat = false; bool getter = false; bool setter = false; bool family = false; var methods = e.Element ("methods"); if (methods != null) { foreach (var m in methods.Elements ("method")) { virt |= m.IsTrue ("virtual"); stat |= m.IsTrue ("static"); var n = m.GetAttribute ("name"); getter |= n.StartsWith ("get_", StringComparison.Ordinal); setter |= n.StartsWith ("set_", StringComparison.Ordinal); var attribs = (MethodAttributes) Int32.Parse (m.GetAttribute ("attrib")); family = ((attribs & MethodAttributes.Public) != MethodAttributes.Public); over |= (attribs & MethodAttributes.VtableLayoutMask) == 0; } } var sb = GetObsoleteMessage (e); bool obsolete = sb.Length > 0; sb.Append (family ? "protected " : "public "); if (virt) sb.Append (over ? "override " : "virtual "); else if (stat) sb.Append ("static "); sb.Append (ptype).Append (' ').Append (name).Append (" { "); if (getter) sb.Append ("get; "); if (setter) sb.Append ("set; "); sb.Append ("}"); if (obsolete) sb.AppendLine (); // more readable output return sb.ToString (); }
public override string GetDescription (XElement e) { var sb = GetObsoleteMessage (e); bool obsolete = sb.Length > 0; string name = e.GetAttribute ("name"); string value = e.GetAttribute ("value"); if (State.BaseType == "System.Enum") { sb.Append (name).Append (" = ").Append (value).Append (','); } else { var attribs = e.Attribute ("attrib"); if (attribs != null) { var attr = (FieldAttributes)Int32.Parse (attribs.Value); if ((attr & FieldAttributes.Public) != FieldAttributes.Public) { sb.Append ("protected "); } else { sb.Append ("public "); } if ((attr & FieldAttributes.Static) != 0) sb.Append ("static "); if ((attr & FieldAttributes.Literal) != 0) sb.Append ("const "); } string ftype = e.GetTypeName ("fieldtype"); sb.Append (ftype).Append (' '); sb.Append (name); if (ftype == "string" && e.Attribute ("value") != null) { if (value == null) sb.Append (" = null"); else sb.Append (" = \"").Append (value).Append ('"'); } sb.Append (';'); } if (obsolete) sb.AppendLine (); // more readable output return sb.ToString (); }
public override bool Equals (XElement source, XElement target, ApiChanges changes) { if (base.Equals (source, target, changes)) return true; var change = new ApiChange (); change.Header = "Modified " + GroupName; change.Append ("public event "); var srcEventType = source.GetTypeName ("eventtype"); var tgtEventType = target.GetTypeName ("eventtype"); if (srcEventType != tgtEventType) { change.AppendModified (srcEventType, tgtEventType, true); } else { change.Append (srcEventType); } change.Append (" "); change.Append (source.GetAttribute ("name")).Append (";"); return false; }
public override string GetDescription (XElement e) { var sb = new StringBuilder (); string name = e.GetAttribute ("name"); string value = e.GetAttribute ("value"); if (State.BaseType == "System.Enum") { sb.Append (name).Append (" = ").Append (value).Append (','); } else { var attribs = e.Attribute ("attrib"); if (attribs != null) { var attr = (FieldAttributes)Int32.Parse (attribs.Value); if ((attr & FieldAttributes.Public) != FieldAttributes.Public) { sb.Append ("protected "); } else { sb.Append ("public "); } if ((attr & FieldAttributes.Static) != 0) sb.Append ("static "); if ((attr & FieldAttributes.Literal) != 0) sb.Append ("const "); } string ftype = e.GetTypeName ("fieldtype"); sb.Append (ftype).Append (' '); sb.Append (name); if (ftype == "string" && e.Attribute ("value") != null) { if (value == null) sb.Append (" = null"); else sb.Append (" = \"").Append (value).Append ('"'); } sb.Append (';'); } return sb.ToString (); }
static void OutputMethodSummary(XElement member) { var fileName = member.GetFileName(); var paths = new List<string>(); var currentDirectory = Directory.GetCurrentDirectory(); paths.Add(currentDirectory); var name = member.GetName(); var fullName = member.GetFullName(); var typeName = member.GetTypeName(); var type = _assembly.GetType(typeName); if (type != null) { if (_baseTypesWithImplementations.ContainsKey(type)) { foreach (var path in _baseTypesWithImplementations[type]) paths.Add(path); } } var summary = member.GetSummary(); var description = summary.GetDescription(); var parameters = member.GetParameters(); var builder = new StringBuilder(); builder.AppendFormat("**{0}**\n",name); builder.AppendLine(); builder.AppendLine(description); builder.AppendLine(); if (parameters.Count() > 0) { builder.AppendLine("#Parameters#"); builder.AppendLine(); foreach (var parameter in parameters) { builder.AppendFormat("\n##{0}##\n", parameter.GetParameterName()); builder.AppendLine(parameter.GetDescription()); } } foreach (var path in paths) { Directory.SetCurrentDirectory(path); var writer = File.CreateText(fileName); writer.Write(builder.ToString()); writer.Close(); builder = new StringBuilder(); builder.AppendLine(); builder.AppendLine(); if (!_methodsOutputted.ContainsKey(path)) { builder.AppendLine("**Methods**\n"); _methodsOutputted[path] = true; } builder.AppendFormat("[{0}]({1})\n", name, fullName); var dir = new DirectoryInfo(path); var typeSummaryFileName = Path.Combine(dir.FullName, string.Format("{0}.md", dir.Name)); File.AppendAllText(typeSummaryFileName, builder.ToString()); } Directory.SetCurrentDirectory(currentDirectory); }
string RenderGenericParameter (XElement gp) { var sb = new StringBuilder (); sb.Append (gp.GetTypeName ("name")); var constraints = gp.DescendantList ("generic-parameter-constraints", "generic-parameter-constraint"); if (constraints != null && constraints.Count > 0) { sb.Append (" : "); for (int i = 0; i < constraints.Count; i++) { if (i > 0) sb.Append (", "); sb.Append (constraints [i].GetTypeName ("name")); } } return sb.ToString (); }
public override string GetDescription (XElement e) { return e.GetTypeName ("name"); }
public override bool Equals (XElement source, XElement target, ApiChanges changes) { if (base.Equals (source, target, changes)) return true; var name = source.GetAttribute ("name"); var srcValue = source.GetAttribute ("value"); var tgtValue = target.GetAttribute ("value"); var change = new ApiChange (); change.Header = "Modified " + GroupName; if (State.BaseType == "System.Enum") { change.Append (name).Append (" = "); if (srcValue != tgtValue) { change.AppendModified (srcValue, tgtValue, true); } else { change.Append (srcValue); } } else { RenderFieldAttributes (source.GetFieldAttributes (), target.GetFieldAttributes (), change); var srcType = source.GetTypeName ("fieldtype"); var tgtType = target.GetTypeName ("fieldtype"); if (srcType != tgtType) { change.AppendModified (srcType, tgtType, true); } else { change.Append (srcType); } change.Append (" "); change.Append (name); if (srcType == "string" && srcValue != null) srcValue = "\"" + srcValue + "\""; if (tgtType == "string" && tgtValue != null) tgtValue = "\"" + tgtValue + "\""; if (srcValue != tgtValue) { change.Append (" = "); if (srcValue == null) srcValue = "null"; if (tgtValue == null) tgtValue = "null"; change.AppendModified (srcValue, tgtValue, true); } else if (srcValue != null) { change.Append (" = "); change.Append (srcValue); } change.Append (";"); } changes.Add (source, target, change); return false; }
void RenderPropertyType (XElement source, XElement target, ApiChange change) { var srcType = source.GetTypeName ("ptype"); var tgtType = target.GetTypeName ("ptype"); if (srcType == tgtType) { change.Append (tgtType); } else { change.AppendModified (srcType, tgtType, true); } change.Append (" "); }
public override string GetDescription (XElement e) { string name = e.Attribute ("name").Value; string ptype = e.GetTypeName ("ptype"); bool virt = false; bool over = false; bool stat = false; bool getter = false; bool setter = false; bool family = false; GetProperties (e, out virt, out over, out stat, out getter, out setter, out family); var sb = new StringBuilder (); sb.Append (family ? "protected " : "public "); if (virt && !State.IgnoreVirtualChanges) sb.Append (over ? "override " : "virtual "); else if (stat) sb.Append ("static "); sb.Append (ptype).Append (' ').Append (name).Append (" { "); if (getter) sb.Append ("get; "); if (setter) sb.Append ("set; "); sb.Append ("}"); return sb.ToString (); }