3 using System.Diagnostics;
5 using System.Reflection;
8 public class HtmlWriter : HtmlTextWriter {
18 public HtmlWriter (TextWriter writer) : this (writer, DefaultTabString)
22 public HtmlWriter (TextWriter writer, string tabString) : base (writer, tabString)
24 full_trace = (Environment.GetEnvironmentVariable ("HTMLWRITER_FULLTRACE") == "yes");
25 string file = Environment.GetEnvironmentVariable ("HTMLWRITER_FILE");
26 Console.WriteLine ("file: '{0}' (null? {1})", file, file == null);
27 if (file != null && file != "") {
28 output = new StreamWriter (new FileStream (file, FileMode.OpenOrCreate | FileMode.Append));
29 Console.WriteLine ("Sending log to '{0}'.", file);
35 void WriteTrace (StackTrace trace)
37 int n = trace.FrameCount;
38 for (int i = 0; i < n; i++) {
39 StackFrame frame = trace.GetFrame (i);
40 Type type = frame.GetMethod ().DeclaringType;
41 string ns = type.Namespace;
42 if (ns != "Helper" && !ns.StartsWith ("System.Web.UI"))
44 output.Write ("\t{0}.{1}", type.Name, frame);
49 public override void AddAttribute (HtmlTextWriterAttribute key, string value, bool fEncode)
51 output.WriteLine ("{0:###0} AddAttribute ({1}, {2}, {3}))", NextIndex (), key, value, fEncode);
53 WriteTrace (new StackTrace ());
55 base.AddAttribute (key, value, fEncode);
58 public override void AddAttribute (string name, string value, bool fEncode)
60 output.WriteLine ("{0:###0} AddAttribute ({1}, {2}, {3}))", NextIndex (), name, value, fEncode);
62 WriteTrace (new StackTrace ());
67 base.AddAttribute (name, value, (HtmlTextWriterAttribute) 0);
70 protected override void AddAttribute (string name, string value, HtmlTextWriterAttribute key)
72 output.WriteLine ("{0:###0} AddAttribute ({1}, {2}, {3}))", NextIndex (), name, value, key);
74 WriteTrace (new StackTrace ());
76 base.AddAttribute (name, value, key);
79 protected override void AddStyleAttribute (string name, string value, HtmlTextWriterStyle key)
81 output.WriteLine ("{0:###0} AddStyleAttribute ({1}, {2}, {3}))", NextIndex (), name, value, key);
83 WriteTrace (new StackTrace ());
85 base.AddStyleAttribute (name, value, key);
88 public override void Close ()
90 output.WriteLine ("{0:###0} Close ()", NextIndex ());
92 WriteTrace (new StackTrace ());
94 if (output != Console.Out)
99 protected override string EncodeAttributeValue (HtmlTextWriterAttribute attrKey, string value)
101 output.WriteLine ("{0:###0} EncodeAttributeValue ({1}, {2})", NextIndex (), attrKey, value);
103 WriteTrace (new StackTrace ());
105 return base.EncodeAttributeValue (attrKey, value);
108 protected override void FilterAttributes ()
110 output.WriteLine ("{0:###0} FilterAttributes ()", NextIndex ());
112 WriteTrace (new StackTrace ());
114 base.FilterAttributes ();
117 public override void Flush ()
119 output.WriteLine ("{0:###0} Flush ()", NextIndex ());
121 WriteTrace (new StackTrace ());
126 protected override HtmlTextWriterTag GetTagKey (string tagName)
128 output.WriteLine ("{0:###0} GetTagKey ({1})", NextIndex (), tagName);
130 WriteTrace (new StackTrace ());
132 return base.GetTagKey (tagName);
135 protected override string GetTagName (HtmlTextWriterTag tagKey)
137 output.WriteLine ("{0:###0} GetTagName ({1})", NextIndex (), tagKey);
139 WriteTrace (new StackTrace ());
141 return base.GetTagName (tagKey);
144 protected override bool OnAttributeRender (string name, string value, HtmlTextWriterAttribute key)
146 output.WriteLine ("{0:###0} OnAttributeRender ({1}, {2}, {3})", NextIndex (), name, value, key);
148 WriteTrace (new StackTrace ());
150 return base.OnAttributeRender (name, value, key);
153 protected override bool OnStyleAttributeRender (string name, string value, HtmlTextWriterStyle key)
155 output.WriteLine ("{0:###0} OnStyleAttributeRender ({1}, {2}, {3})", NextIndex (), name, value, key);
157 WriteTrace (new StackTrace ());
159 return base.OnStyleAttributeRender (name, value, key);
162 protected override bool OnTagRender (string name, HtmlTextWriterTag key)
164 output.WriteLine ("{0:###0} OnTagRender ({1}, {2})", NextIndex (), name, key);
166 WriteTrace (new StackTrace ());
168 return base.OnTagRender (name, key);
172 protected override void OutputTabs ()
174 output.WriteLine ("{0:###0} OutputTabs ()", NextIndex ());
176 WriteTrace (new StackTrace ());
181 protected override string RenderAfterContent ()
183 output.WriteLine ("{0:###0} RenderAfterContent ()", NextIndex ());
185 WriteTrace (new StackTrace ());
190 protected override string RenderAfterTag ()
192 output.WriteLine ("{0:###0} RenderAfterTag ()", NextIndex ());
194 WriteTrace (new StackTrace ());
199 protected override string RenderBeforeContent ()
201 output.WriteLine ("{0:###0} RenderBeforeContent ()", NextIndex ());
203 WriteTrace (new StackTrace ());
208 protected override string RenderBeforeTag ()
210 output.WriteLine ("{0:###0} RenderBeforeTag ()", NextIndex ());
212 WriteTrace (new StackTrace ());
217 public override void RenderBeginTag (string tagName)
219 output.WriteLine ("{0:###0} RenderBeginTag ({1})", NextIndex (), tagName);
221 WriteTrace (new StackTrace ());
223 base.RenderBeginTag (tagName);
226 public override void RenderBeginTag (HtmlTextWriterTag tagKey)
228 output.WriteLine ("{0:###0} RenderBeginTag ({1})", NextIndex (), tagKey);
230 WriteTrace (new StackTrace ());
232 base.RenderBeginTag (tagKey);
235 public override void RenderEndTag ()
237 output.WriteLine ("{0:###0} RenderEndTag ()", NextIndex ());
239 WriteTrace (new StackTrace ());
241 base.RenderEndTag ();
244 public override void WriteAttribute (string name, string value, bool fEncode)
246 output.WriteLine ("{0:###0} WriteAttribute ({1}, {2}, {3})", NextIndex (), name, value, fEncode);
248 WriteTrace (new StackTrace ());
250 base.WriteAttribute (name, value, fEncode);
254 public override void WriteBeginTag (string tagName)
256 output.WriteLine ("{0:###0} WriteBeginTag ({1})", NextIndex (), tagName);
258 WriteTrace (new StackTrace ());
260 base.WriteBeginTag (tagName);
263 public override void WriteEndTag (string tagName)
265 output.WriteLine ("{0:###0} WriteEndTag ({1})", NextIndex (), tagName);
267 WriteTrace (new StackTrace ());
269 base.WriteEndTag (tagName);
272 public override void WriteFullBeginTag (string tagName)
274 output.WriteLine ("{0:###0} WriteFullBeginTag ({1})", NextIndex (), tagName);
276 WriteTrace (new StackTrace ());
278 base.WriteFullBeginTag (tagName);
281 public override void WriteStyleAttribute (string name, string value, bool fEncode)
283 output.WriteLine ("{0:###0} WriteStyleAttribute ({1}, {2}, {3})", NextIndex (), name, value, fEncode);
285 WriteTrace (new StackTrace ());
287 base.WriteStyleAttribute (name, value, fEncode);