Mercurial > projects > dil
annotate trunk/src/docgen/sourcelisting/latexwriter.d @ 444:0bda71dc9c4f
More document template and source listing code.
author | Jari-Matti M?kel? <jmjm@iki.fi> |
---|---|
date | Wed, 17 Oct 2007 03:12:46 +0300 |
parents | |
children | c82b36b9cadf |
rev | line source |
---|---|
444
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
1 /** |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
2 * Author: Jari-Matti Mäkelä |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
3 * License: GPL3 |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
4 */ |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
5 module docgen.sourcelisting.latexwriter; |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
6 |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
7 public import docgen.sourcelisting.writer; |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
8 import dil.Parser; |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
9 import tango.io.protocol.Writer : Writer; |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
10 import tango.io.FileConduit : FileConduit; |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
11 import tango.io.Buffer : Buffer; |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
12 import tango.io.Print: Print; |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
13 import tango.text.convert.Layout : Layout; |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
14 |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
15 /** |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
16 * Adds a code listing section for the given file. |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
17 */ |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
18 class LaTeXWriter : AbstractListingWriter { |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
19 this(ListingWriterFactory factory, OutputStream[] outputs) { |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
20 super(factory, outputs); |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
21 assert(outputs.length == 2, "Wrong number of outputs"); |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
22 } |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
23 |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
24 void generateListing(Parser parser) { |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
25 auto output2 = new Print!(char)(new Layout!(char), outputs[0]); |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
26 auto output = new Print!(char)(new Layout!(char), outputs[1]); |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
27 /* TODO */ |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
28 } |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
29 |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
30 void generateListing(InputStream input) { |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
31 auto output2 = new Print!(char)(new Layout!(char), outputs[0]); |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
32 |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
33 if (cast(FileConduit)outputs[1]) { |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
34 char[] fn = (cast(FileConduit)outputs[1]).toUtf8(); |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
35 output2.format("\\lstinputlisting[language=d]{{{0}}", fn); |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
36 } |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
37 |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
38 auto buf = new Buffer(256); |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
39 buf.output = outputs[1]; |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
40 buf.copy(input); |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
41 } |
0bda71dc9c4f
More document template and source listing code.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
42 } |