update MEF to preview 9
[mcs.git] / tools / mdoc / Mono.Documentation / XhtmlWriter.cs
blob0a393d6bdc7ce7bd1295bfcf781550241132355c
1 //
2 // XhtmlWriter.cs
3 //
4 // Author:
5 // Atsushi Enomoto <atsushi@ximian.com>
6 // Jonathan Pryor <jpryor@novell.com>
7 //
8 // (C)2004 Atsushi Enomoto
9 //
11 using System;
12 using System.Globalization;
13 using System.Collections.Generic;
14 using System.Xml;
16 namespace Mono.Documentation {
18 class XhtmlWriter : DelegatingXmlWriter {
19 XmlWriter writer;
20 Stack<string> localNames;
21 Stack<string> namespaces;
23 public XhtmlWriter (XmlWriter writer) : base (writer)
25 this.writer = writer;
26 localNames = new Stack<string> ();
27 namespaces = new Stack<string> ();
30 public override void WriteStartElement (string prefix, string localName, string ns)
32 localNames.Push (localName);
33 namespaces.Push (ns);
34 writer.WriteStartElement (prefix, localName, ns);
37 public override void WriteEndElement ()
39 WriteWiseEndElement (false);
42 public override void WriteFullEndElement ()
44 WriteWiseEndElement (true);
47 void WriteWiseEndElement (bool full)
49 string localName = localNames.Pop ();
50 /* string ns = */ namespaces.Pop ();
51 if (true /* ns == "http://www.w3.org/1999/xhtml" */) {
52 switch (localName.ToLower (CultureInfo.InvariantCulture)) {
53 case "area":
54 case "base":
55 case "basefont":
56 case "br":
57 case "col":
58 case "frame":
59 case "hr":
60 case "img":
61 case "input":
62 case "isindex":
63 case "link":
64 case "meta":
65 case "param":
66 full = false;
67 break;
68 default:
69 full = true;
70 break;
73 if (full)
74 writer.WriteFullEndElement ();
75 else
76 writer.WriteEndElement ();
80 class DelegatingXmlWriter : XmlWriter {
81 XmlWriter writer;
83 public DelegatingXmlWriter (XmlWriter writer)
85 this.writer = writer;
88 public override void Close ()
90 writer.Close ();
93 public override void Flush ()
95 writer.Flush ();
98 public override string LookupPrefix (string ns)
100 return writer.LookupPrefix (ns);
103 public override void WriteBase64 (byte [] buffer, int index, int count)
105 writer.WriteBase64 (buffer, index, count);
108 public override void WriteBinHex (byte [] buffer, int index, int count)
110 writer.WriteBinHex (buffer, index, count);
113 public override void WriteCData (string text)
115 writer.WriteCData (text);
118 public override void WriteCharEntity (char ch)
120 writer.WriteCharEntity (ch);
123 public override void WriteChars (char [] buffer, int index, int count)
125 writer.WriteChars (buffer, index, count);
128 public override void WriteComment (string text)
130 writer.WriteComment (text);
133 public override void WriteDocType (string name, string pubid, string sysid, string subset)
135 writer.WriteDocType (name, pubid, sysid, subset);
138 public override void WriteEndAttribute ()
140 writer.WriteEndAttribute ();
143 public override void WriteEndDocument ()
145 writer.WriteEndDocument ();
148 public override void WriteEndElement ()
150 writer.WriteEndElement ();
153 public override void WriteEntityRef (string name)
155 writer.WriteEntityRef (name);
158 public override void WriteFullEndElement ()
160 writer.WriteFullEndElement ();
163 public override void WriteName (string name)
165 writer.WriteName (name);
168 public override void WriteNmToken (string name)
170 writer.WriteNmToken (name);
173 public override void WriteNode (XmlReader reader, bool defattr)
175 writer.WriteNode (reader, defattr);
178 public override void WriteProcessingInstruction (string name, string text)
180 writer.WriteProcessingInstruction (name, text);
183 public override void WriteQualifiedName (string localName, string ns)
185 writer.WriteQualifiedName (localName, ns);
188 public override void WriteRaw (string data)
190 writer.WriteRaw (data);
193 public override void WriteRaw (char [] buffer, int index, int count)
195 writer.WriteRaw (buffer, index, count);
198 public override void WriteStartAttribute (string prefix, string localName, string ns)
200 writer.WriteStartAttribute (prefix, localName, ns);
203 public override void WriteStartDocument (bool standalone)
205 writer.WriteStartDocument (standalone);
208 public override void WriteStartDocument ()
210 writer.WriteStartDocument ();
213 public override void WriteStartElement (string prefix, string localName, string ns)
215 writer.WriteStartElement (prefix, localName, ns);
218 public override void WriteString (string text)
220 writer.WriteString (text);
223 public override void WriteSurrogateCharEntity (char lowChar, char highChar)
225 writer.WriteSurrogateCharEntity (lowChar, highChar);
228 public override void WriteWhitespace (string ws)
230 writer.WriteWhitespace (ws);
233 public override WriteState WriteState {
234 get {
235 return writer.WriteState;
239 public override string XmlLang {
240 get {
241 return writer.XmlLang;
245 public override XmlSpace XmlSpace {
246 get {
247 return writer.XmlSpace;