Mercurial > projects > dil
diff trunk/src/docgen/sourcelisting/htmlwriter.d @ 451:3f44c38bf870
Page templates, more flexible writer interfaces, small fixes.
author | Jari-Matti M?kel? <jmjm@iki.fi> |
---|---|
date | Wed, 24 Oct 2007 17:25:52 +0300 |
parents | 757bd048482c |
children | 4e5b35df3060 |
line wrap: on
line diff
--- a/trunk/src/docgen/sourcelisting/htmlwriter.d Wed Oct 17 20:55:55 2007 +0200 +++ b/trunk/src/docgen/sourcelisting/htmlwriter.d Wed Oct 24 17:25:52 2007 +0300 @@ -5,21 +5,39 @@ module docgen.sourcelisting.htmlwriter; public import docgen.sourcelisting.writer; +import docgen.misc.textutils; import dil.Parser; import tango.io.protocol.Writer : Writer; import tango.io.FileConduit : FileConduit; +import tango.io.stream.FileStream; import tango.io.Print: Print; import tango.text.convert.Layout : Layout; +import tango.text.stream.LineIterator; /** * TODO */ -class HTMLWriter : AbstractWriter!(ListingWriterFactory, 2), ListingWriter { - this(ListingWriterFactory factory, OutputStream[] outputs) { - super(factory, outputs); +class HTMLWriter : AbstractWriter!(ListingWriterFactory), ListingWriter { + DocumentWriter writer; + + this(ListingWriterFactory factory, DocumentWriter writer) { + super(factory); + this.writer = writer; } - + void generateListing(Parser parser) { /* TODO */ } - void generateListing(InputStream input, char[] moduleName) { /* TODO */ } + + void generateListing(InputStream input, OutputStream output, char[] moduleName) { + auto inputStream = cast(FileInput)input; + auto content = new char[inputStream.length]; + auto bytesRead = inputStream.read (content); + + assert(bytesRead == inputStream.length, "Error reading source file"); + + writer.addListing( + moduleName, + xml_escape(content) + ); + } } \ No newline at end of file