EcmaDoc.GetCref() to generate //member/@name values.
* Mono.Documentation/dump.cs: Add -f=FORMAT support, so that we can
load an appropriate HelpSource (if supplied) so that an appropriate
Node.PublicUrl can be displayed in the output.
svn path=/trunk/mcs/; revision=131927
+2009-04-16 Jonathan Pryor <jpryor@novell.com>
+
+ * Mono.Documentation/monodocs2slashdoc.cs: Code refactor; use
+ EcmaDoc.GetCref() to generate //member/@name values.
+ * Mono.Documentation/dump.cs: Add -f=FORMAT support, so that we can
+ load an appropriate HelpSource (if supplied) so that an appropriate
+ Node.PublicUrl can be displayed in the output.
+
2009-04-15 Jonathan Pryor <jpryor@novell.com>
* Mono.Documentation/webdoc.cs: Remove console debug spew. If you run
public override void Run (IEnumerable<string> args)
{
+ var validFormats = RootTree.GetSupportedFormats ();
+ string cur_format = "";
+ var formats = new Dictionary<string, List<string>> ();
var options = new OptionSet () {
+ { "f|format=",
+ "The documentation {FORMAT} used in FILES. " +
+ "Valid formats include:\n " +
+ string.Join ("\n ", validFormats) + "\n" +
+ "If not specified, no HelpSource is used. This may " +
+ "impact the PublicUrls displayed for nodes.",
+ v => {
+ if (Array.IndexOf (validFormats, v) < 0)
+ Error ("Invalid documentation format: {0}.", v);
+ cur_format = v;
+ } },
+ { "<>", v => AddFormat (formats, cur_format, v) },
};
List<string> files = Parse (options, args, "dump-tree",
"[OPTIONS]+ FILES",
- "Print out the nodes within the assembled .tree file FILES.");
+ "Print out the nodes within the assembled .tree FILES,\n" +
+ "as produced by 'mdoc assemble'.");
if (files == null)
return;
- foreach (var file in files) {
- Tree t = new Tree (null, file);
- Node.PrintTree (t);
+ foreach (string format in formats.Keys) {
+ foreach (string file in formats [format]) {
+ HelpSource hs = format == ""
+ ? null
+ : RootTree.GetHelpSource (format, file.Replace (".tree", ""));
+ Tree t = new Tree (hs, file);
+ Node.PrintTree (t);
+ }
}
}
+
+ private void AddFormat (Dictionary<string, List<string>> d, string format, string file)
+ {
+ if (format == null)
+ format = "";
+ List<string> l;
+ if (!d.TryGetValue (format, out l)) {
+ l = new List<string> ();
+ d.Add (format, l);
+ }
+ l.Add (file);
+ }
}
}
using System.Text.RegularExpressions;
using System.Xml;
+using Monodoc;
using Mono.Options;
namespace Mono.Documentation {
XmlElement members = outputfiles [assemblyname];
if (members == null) continue; // assembly is strangely not listed in the index
- string typeName = XmlDocUtils.ToEscapedTypeName (type.SelectSingleNode("Type/@FullName").InnerText);
- CreateMember("T:" + typeName, type.DocumentElement, members);
+ CreateMember(EcmaDoc.GetCref (type.DocumentElement), type.DocumentElement, members);
foreach (XmlElement memberdoc in type.SelectNodes("Type/Members/Member")) {
- string name = typeName;
- switch (memberdoc.SelectSingleNode("MemberType").InnerText) {
- case "Constructor":
- name = "C:" + name + MakeArgs(memberdoc);
- break;
- case "Method":
- name = "M:" + name + "." + XmlDocUtils.ToEscapedMemberName (memberdoc.GetAttribute("MemberName")) + MakeArgs(memberdoc);
- if (memberdoc.GetAttribute("MemberName") == "op_Implicit" || memberdoc.GetAttribute("MemberName") == "op_Explicit")
- name += "~" + XmlDocUtils.ToTypeName (memberdoc.SelectSingleNode("ReturnValue/ReturnType").InnerText, memberdoc);
- break;
- case "Property":
- name = "P:" + name + "." + XmlDocUtils.ToEscapedMemberName (memberdoc.GetAttribute("MemberName")) + MakeArgs(memberdoc);
- break;
- case "Field":
- name = "F:" + name + "." + XmlDocUtils.ToEscapedMemberName (memberdoc.GetAttribute("MemberName"));
- break;
- case "Event":
- name = "E:" + name + "." + XmlDocUtils.ToEscapedMemberName (memberdoc.GetAttribute("MemberName"));
- break;
- }
-
+ string name = EcmaDoc.GetCref (memberdoc);
CreateMember(name, memberdoc, members);
}
}
foreach (XmlNode docnode in input.SelectSingleNode("Docs"))
member.AppendChild(output.OwnerDocument.ImportNode(docnode, true));
}
-
- private static string MakeArgs (XmlElement member)
- {
- XmlNodeList parameters = member.SelectNodes ("Parameters/Parameter");
- if (parameters.Count == 0)
- return "";
- StringBuilder args = new StringBuilder ();
- args.Append ("(");
- args.Append (XmlDocUtils.ToTypeName (parameters [0].Attributes ["Type"].Value, member));
- for (int i = 1; i < parameters.Count; ++i) {
- args.Append (",");
- args.Append (XmlDocUtils.ToTypeName (parameters [i].Attributes ["Type"].Value, member));
- }
- args.Append (")");
- return args.ToString ();
- }
private static void WriteXml(XmlElement element, System.IO.TextWriter output) {
XmlTextWriter writer = new XmlTextWriter(output);