6992685b86
Former-commit-id: 0a113cb3a6feb7873f632839b1307cc6033cd595
67 lines
1.8 KiB
C#
67 lines
1.8 KiB
C#
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 ();
|
|
}
|
|
}
|
|
}
|