[mdoc-update] Explicitly order //Type children.
authorJonathan Pryor <jonpryor@vt.edu>
Thu, 4 Nov 2010 19:05:54 +0000 (15:05 -0400)
committerJonathan Pryor <jonpryor@vt.edu>
Thu, 4 Nov 2010 19:23:33 +0000 (15:23 -0400)
Unlike 03c231a585c8ff46f93084210fa240e8f6e4f65b, this isn't needed for
'mdoc-validate', it's instead for "niceness" reasons.

For example, as with f6e4f65b, if we update docs generated by an older
version mdoc, we'll add a <TypeSignature/> for ILAsm.  However, the
added <TypeSignature/> is at the end of the file, nowhere near the
existing <TypeSignature/>s, which is...odd.  Not bad, per-se, but
"undesirable".

Thus, we order things for consistency during/after updates.

mcs/tools/mdoc/Mono.Documentation/monodocer.cs

index 1695efe60cf403898679021bb2120c20707078c4..e2a9b740facc850e304865d44c911d1caf4124af 100644 (file)
@@ -1248,9 +1248,32 @@ class MDocUpdater : MDocCommand
                if (!DocUtils.IsDelegate (type))
                        WriteElement (root, "Members");
 
+               OrderTypeNodes (root, root.ChildNodes);
                NormalizeWhitespace(root);
        }
 
+       static readonly string[] TypeNodeOrder = {
+               "TypeSignature",
+               "MemberOfLibrary",
+               "AssemblyInfo",
+               "ThreadingSafetyStatement",
+               "ThreadSafetyStatement",
+               "TypeParameters",
+               "Base",
+               "Interfaces",
+               "Attributes",
+               "Parameters",
+               "ReturnValue",
+               "Docs",
+               "Members",
+               "TypeExcluded",
+       };
+
+       static void OrderTypeNodes (XmlNode member, XmlNodeList children)
+       {
+               ReorderNodes (member, children, TypeNodeOrder);
+       }
+
        internal static IEnumerable<T> Sort<T> (IEnumerable<T> list)
        {
                List<T> l = new List<T> (list);