Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremie Laval <jeremie.laval@gmail.com>2012-11-28 20:59:15 +0400
committerJeremie Laval <jeremie.laval@gmail.com>2012-11-29 19:21:04 +0400
commit6c891c64541d8af27a74f5085eba81ca3526d45a (patch)
tree69bb5dd23f58f79246a0da4fb4c8be4021e90e2d
parenta808eeec755ae00acdbacf483cd027610f6562ca (diff)
[monkeydoc] Create the summary files in ecma-provider
-rw-r--r--mcs/tools/monkeydoc/Monkeydoc/providers/ecma-provider.cs52
1 files changed, 51 insertions, 1 deletions
diff --git a/mcs/tools/monkeydoc/Monkeydoc/providers/ecma-provider.cs b/mcs/tools/monkeydoc/Monkeydoc/providers/ecma-provider.cs
index a122c9a843a..04226e9fac2 100644
--- a/mcs/tools/monkeydoc/Monkeydoc/providers/ecma-provider.cs
+++ b/mcs/tools/monkeydoc/Monkeydoc/providers/ecma-provider.cs
@@ -73,7 +73,9 @@ namespace MonkeyDoc.Providers
foreach (var ns in types.Elements ("Namespace")) {
var nsName = (string)ns.Attribute ("Name");
var nsNode = root.GetOrCreateNode (!string.IsNullOrEmpty (nsName) ? nsName : "global::", "N:" + ns.Attribute ("Name").Value);
-
+ var nsElements = new XElement ("elements",
+ new XElement ("summary"),
+ new XElement ("remarks"));
foreach (var type in ns.Elements ("Type")) {
// Add the XML file corresponding to the type to our storage
var id = resID++;
@@ -84,6 +86,7 @@ namespace MonkeyDoc.Providers
}
using (var file = File.OpenRead (typeFilePath))
storage.Store (id.ToString (), file);
+ nsElements.Add (ExtractClassSummary (typeFilePath));
var url = "ecma:" + id + '#' + type.Attribute ("Name").Value + '/';
var typeNode = nsNode.CreateNode ((string)(type.Attribute ("DisplayName") ?? type.Attribute ("Name")), url);
@@ -104,11 +107,19 @@ namespace MonkeyDoc.Providers
node.CreateNode (MakeMemberCaption (member), (memberIndex++).ToString ());
}
}
+
+ storage.Store ("xml.summary." + nsName, nsElements.ToString ());
nsNode.Sort ();
}
root.Sort ();
}
}
+
+ var masterSummary = new XElement ("elements",
+ directories
+ .SelectMany (d => Directory.EnumerateFiles (d, "ns-*.xml"))
+ .Select (ExtractNamespaceSummary));
+ storage.Store ("mastersummary.xml", masterSummary.ToString ());
}
string PluralizeMemberType (string memberType)
@@ -136,6 +147,45 @@ namespace MonkeyDoc.Providers
return caption;
}
+ XElement ExtractClassSummary (string typeFilePath)
+ {
+ using (var reader = XmlReader.Create (typeFilePath)) {
+ reader.ReadToFollowing ("Type");
+ var name = reader.GetAttribute ("Name");
+ var fullName = reader.GetAttribute ("FullName");
+ reader.ReadToFollowing ("AssemblyName");
+ var assemblyName = reader.ReadElementString ();
+ reader.ReadToFollowing ("summary");
+ var summary = reader.ReadInnerXml ();
+ reader.ReadToFollowing ("remarks");
+ var remarks = reader.ReadInnerXml ();
+
+ return new XElement ("class",
+ new XAttribute ("name", name ?? string.Empty),
+ new XAttribute ("fullname", fullName ?? string.Empty),
+ new XAttribute ("assembly", assemblyName ?? string.Empty),
+ new XElement ("summary", new XCData (summary)),
+ new XElement ("remarks", new XCData (remarks)));
+ }
+ }
+
+ XElement ExtractNamespaceSummary (string nsFile)
+ {
+ using (var reader = XmlReader.Create (nsFile)) {
+ reader.ReadToFollowing ("Namespace");
+ var name = reader.GetAttribute ("Name");
+ reader.ReadToFollowing ("summary");
+ var summary = reader.ReadInnerXml ();
+ reader.ReadToFollowing ("remarks");
+ var remarks = reader.ReadInnerXml ();
+
+ return new XElement ("namespace",
+ new XAttribute ("ns", name ?? string.Empty),
+ new XElement ("summary", new XCData (summary)),
+ new XElement ("remarks", new XCData (remarks)));
+ }
+ }
+
public override void CloseTree (HelpSource hs, Tree tree)
{
AddImages (hs);