keep alpha source states during node propagation
[IRC.git] / Robust / src / Benchmarks / mlp / tagger / mlp-smaller / QuarkGenerator.java
1 /**\r
2  * QuarkGenerator interface\r
3  * Backend tagged text generator for QuarkXpress\r
4  *\r
5  * @author  Daniel Jackson\r
6  * @version 0, 07/08/01\r
7  */\r
8 \r
9 //package tagger;\r
10 //import java.io.*;\r
11 //import java.util.*;\r
12 \r
13 public class QuarkGenerator extends Generator {\r
14   FileOutputStream output_stream;\r
15   LinkedList format_stack;\r
16   private boolean on;\r
17 \r
18   public QuarkGenerator (FileOutputStream s) {\r
19     on = true;\r
20     output_stream = s;\r
21     \r
22     // stack holds strings used to terminate formats\r
23     format_stack = /*disjoint llQuarkGen*/ new LinkedList ();\r
24   }\r
25   \r
26   public void suppress_on () {\r
27     on = false;\r
28   }\r
29   \r
30   public void suppress_off () {\r
31     on = true;\r
32   }\r
33 \r
34   private void print (String s) {\r
35     if (on) output_stream.write (s.getBytes());\r
36   }\r
37 \r
38   public void linefeed () {\r
39     if (on) output_stream.write ('\n');\r
40   }\r
41 \r
42   // print "@style:"\r
43   public void new_para (String style) {\r
44     print ("@" + style + ":");\r
45   }\r
46 \r
47   // print "<\n>"\r
48   public void new_line () {\r
49     print ("<\\n>");\r
50   }\r
51 \r
52   public void special_char (String font, String index) {\r
53     print ("<f\"" + font + "\"><\\#" + index + "><f$>");\r
54   }\r
55 \r
56   public void special_char (String index) {\r
57     print ("<\\#" + index + ">");\r
58   }\r
59 \r
60   public void plaintext (String text) {\r
61     print (text);\r
62   }\r
63 \r
64   public void push_format (int format) {\r
65     //switch (format) {\r
66 \r
67     if( format == Generator.ROMAN() ||\r
68         format == Generator.ITALICS() ) {\r
69       print ("<I>");\r
70       format_stack.push ("<I>");\r
71       return;\r
72     }\r
73 \r
74     if( format == Generator.BOLD() ) {\r
75       print ("<B>");\r
76       format_stack.push ("<B>");\r
77       return;\r
78     }\r
79 \r
80     if( format == Generator.SUBSCRIPT() ) {\r
81       print ("<->");\r
82       format_stack.push ("<->");\r
83       return;\r
84     }\r
85 \r
86     if( format == Generator.SUPERSCRIPT() ) {\r
87       print ("<+>");\r
88       format_stack.push ("<+>");\r
89       return;\r
90     }\r
91     \r
92     Assert.unreachable ();\r
93   }\r
94   \r
95   public void pop_format () {\r
96     // for now, handle too many pops without report\r
97     if (format_stack.isEmpty ()) return;\r
98     print ((String) format_stack.pop ());\r
99   }\r
100 }\r