File: Ecmaspec2Html.cs

package info (click to toggle)
mono 6.12.0.199%2Bds-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,192 kB
  • sloc: cs: 11,181,844; xml: 2,850,076; ansic: 689,413; cpp: 123,344; perl: 59,361; javascript: 30,841; asm: 21,845; makefile: 19,951; sh: 15,030; python: 4,771; pascal: 925; sql: 859; sed: 16; php: 1
file content (66 lines) | stat: -rw-r--r-- 1,837 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.Collections.Generic;

namespace Monodoc.Generators.Html
{
	public class Ecmaspec2Html : IHtmlExporter
	{
		static string css_ecmaspec;
		static XslTransform ecma_transform;
		static XsltArgumentList args = new XsltArgumentList();

		public string CssCode {
			get {
				if (css_ecmaspec != null)
					return css_ecmaspec;
				System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly (typeof (Ecmaspec2Html));
				Stream str_css = assembly.GetManifestResourceStream ("ecmaspec.css");
				css_ecmaspec = (new StreamReader (str_css)).ReadToEnd ();
				return css_ecmaspec;
			}
		}

		class ExtObj
		{
			public string Colorize (string code, string lang)
			{
				return Mono.Utilities.Colorizer.Colorize (code, lang);
			}
		}

		public string Export (Stream stream, Dictionary<string, string> extraArgs)
		{
			return Htmlize (new XPathDocument (stream));
		}

		public string Export (string input, Dictionary<string, string> extraArgs)
		{
			return Htmlize (new XPathDocument (new StringReader (input)));
		}

		static string Htmlize (XPathDocument ecma_xml)
		{
			if (ecma_transform == null){
				ecma_transform = new XslTransform ();
				System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly (typeof (Ecmaspec2Html));
				Stream stream;
				stream = assembly.GetManifestResourceStream ("ecmaspec-html-css.xsl");

				XmlReader xml_reader = new XmlTextReader (stream);
				ecma_transform.Load (xml_reader, null, null);
				args.AddExtensionObject ("monodoc:///extensions", new ExtObj ()); 
			}
		
			if (ecma_xml == null) return "";

			StringWriter output = new StringWriter ();
			ecma_transform.Transform (ecma_xml, args, output, null);
		
			return output.ToString ();
		}
	}
}