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 ();
}
}
}
|