[Mono-docs-list] auto-add nodes to monodoc.xml
John Luke
jluke@cfl.rr.com
02 Jul 2003 20:35:54 -0400
--=-DfqEbK08FRdT1gSrypt2
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
Hello,
I was thinking it might be a good idea to make it easier for external
projects to add themselves to monodoc.xml
I wanted to be able to do something like:
monodoc --add-node GtkMozEmbed
to automatically add a line like:
<node label="GtkMozEmbed Libraries" name="classlib-gtkmozembed" />
So this is what the attached patch and file do. (Hopefully) you will be
able to add a line to the install of your docs Makefile to have it added
automatically. As an added bonus we could remove the extra libs from
monodoc.xml so they are not displayed until installed.
John
--=-DfqEbK08FRdT1gSrypt2
Content-Disposition: attachment; filename=addnode.diff
Content-Type: text/plain; name=addnode.diff; charset=UTF-8
Content-Transfer-Encoding: 7bit
? addnode.diff
? browser/addnode.cs
? browser/browser.gladep
? class/nunit/nunit-docs.tree
? class/nunit/nunit-docs.zip
? class/nunit/tmp
? doctools/DocStatus
? doctools/lib/monodoc.dll
? doctools/valdoc/generated.cs
Index: browser/Makefile.am
===================================================================
RCS file: /cvs/public/monodoc/browser/Makefile.am,v
retrieving revision 1.17
diff -u -r1.17 Makefile.am
--- browser/Makefile.am 26 Jun 2003 05:51:59 -0000 1.17
+++ browser/Makefile.am 3 Jul 2003 00:28:45 -0000
@@ -2,11 +2,16 @@
monodoc_DATA = browser.exe assembler.exe monodoc.xml
CSC=mcs
-shared_sources = $(srcdir)/monohb-provider.cs $(srcdir)/xhtml-provider.cs $(srcdir)/ecma-provider.cs $(srcdir)/simple-provider.cs $(srcdir)/html-helper.cs $(srcdir)/provider.cs $(srcdir)/index.cs
+shared_sources = $(srcdir)/monohb-provider.cs $(srcdir)/xhtml-provider.cs $(srcdir)/ecma-provider.cs $(srcdir)/simple-provider.cs $(srcdir)/html-helper.cs $(srcdir)/provider.cs $(srcdir)/index.cs $(srcdir)/addnode.cs
assembler_sources = $(srcdir)/assembler.cs $(shared_sources)
dump_sources = $(srcdir)/dump.cs $(shared_sources)
browser_sources = $(srcdir)/browser.cs $(srcdir)/list.cs $(srcdir)/history.cs $(shared_sources)
-browser_assemblies = -r:gtk-sharp.dll -r:glade-sharp.dll -r:glib-sharp.dll -r:ICSharpCode.SharpZipLib.dll -r:pango-sharp.dll -r:gdk-sharp.dll
+browser_assemblies = -r:gtk-sharp.dll \
+ -r:glade-sharp.dll \
+ -r:glib-sharp.dll \
+ -r:ICSharpCode.SharpZipLib.dll \
+ -r:pango-sharp.dll \
+ -r:gdk-sharp.dll
EXTRA_DIST = $(assembler_sources) $(dump_sources) $(browser_sources) browser.glade monodoc.xml mono-ecma.xsl
Index: browser/browser.cs
===================================================================
RCS file: /cvs/public/monodoc/browser/browser.cs,v
retrieving revision 1.33
diff -u -r1.33 browser.cs
--- browser/browser.cs 30 Jun 2003 23:47:11 -0000 1.33
+++ browser/browser.cs 3 Jul 2003 00:28:45 -0000
@@ -27,7 +27,7 @@
"Joshua Tauberer <tauberer@for.net",
"Lee Mallabone <mono-docs@fonicmonkey.net",
"Philip Van Hoof <spamfrommailing@freax.org",
-
+ "John Luke <jluke@cfl.rr.com>",
};
Glade.XML ui;
@@ -61,6 +61,9 @@
case "--help":
Console.WriteLine ("Options are:\n"+
"browser [--html TOPIC] [--make-index] [TOPIC]");
+ return 0;
+ case "--add-node":
+ new AddNode (args[1]);
return 0;
default:
topic = args [i];
--=-DfqEbK08FRdT1gSrypt2
Content-Disposition: attachment; filename=addnode.cs
Content-Type: text/x-csharp; name=addnode.cs; charset=UTF-8
Content-Transfer-Encoding: 7bit
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
public class AddNode
{
public AddNode (string NewLabel)
{
Boolean alreadythere = false;
string NewName = "classlib-" + NewLabel.ToLower ();
NewLabel = NewLabel + " Libraries";
XPathDocument doc = new XPathDocument ("monodoc.xml");
XPathNavigator nav = doc.CreateNavigator ();
XPathNodeIterator xni = nav.Select ("/node/node");
// the root node
System.Text.Encoding utf8 = new System.Text.UTF8Encoding (false, true);
XmlTextWriter writer = new XmlTextWriter ("monodoc.xml", utf8);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument ();
writer.WriteStartElement (null,"node", null);
writer.WriteStartAttribute (null, "label", null);
writer.WriteRaw ("Mono Documentation");
writer.WriteEndAttribute ();
writer.WriteStartAttribute (null, "name", null);
writer.WriteRaw ("root:");
writer.WriteEndAttribute ();
for (int i = 0; i < xni.Count; i++)
{
xni.MoveNext ();
XmlNode node = ((IHasXmlNode) xni.Current).GetNode ();
XmlAttributeCollection attr = node.Attributes;
string label = attr["label"].Value;
string name = attr["name"].Value;
// do not write a path twice
if (NewName == name)
alreadythere = true;
// the original values
writer.WriteStartElement (null,"node", null);
writer.WriteStartAttribute (null, "label", null);
writer.WriteRaw (label);
writer.WriteEndAttribute ();
writer.WriteStartAttribute (null, "name", null);
writer.WriteRaw (name);
writer.WriteEndAttribute ();
writer.WriteEndElement ();
}
// the new node
if (alreadythere != true)
{
writer.WriteStartElement (null,"node", null);
writer.WriteStartAttribute (null, "label", null);
writer.WriteRaw (NewLabel);
writer.WriteEndAttribute ();
writer.WriteStartAttribute (null, "name", null);
writer.WriteRaw (NewName);
writer.WriteEndAttribute ();
writer.WriteEndElement ();
}
writer.WriteEndElement ();
writer.WriteEndDocument ();
writer.Flush ();
writer.Close ();
}
}
--=-DfqEbK08FRdT1gSrypt2--