1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.doxia.sink.impl;
20
21 import java.io.IOException;
22 import java.io.Writer;
23
24 import org.apache.maven.doxia.sink.SinkEventAttributes;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
27
28
29
30
31
32 public class TextSink extends AbstractSink {
33 private static final Logger LOGGER = LoggerFactory.getLogger(TextSink.class);
34
35
36 private final Writer out;
37
38
39
40
41 public TextSink(Writer writer) {
42 this.out = writer;
43 }
44
45 @Override
46 public void head_() {
47 writeln("end:head");
48 }
49
50 @Override
51 public void body_() {
52 writeln("end:body");
53 }
54
55 @Override
56 public void article_() {
57 writeln("end:article");
58 }
59
60 @Override
61 public void navigation_() {
62 writeln("end:navigation");
63 }
64
65 @Override
66 public void sidebar_() {
67 writeln("end:sidebar");
68 }
69
70 @Override
71 public void list_() {
72 writeln("end:list");
73 }
74
75 @Override
76 public void listItem_() {
77 writeln("end:listItem");
78 }
79
80 @Override
81 public void numberedList_() {
82 writeln("end:numberedList");
83 }
84
85 @Override
86 public void numberedListItem_() {
87 writeln("end:numberedListItem");
88 }
89
90 @Override
91 public void definitionList_() {
92 writeln("end:definitionList");
93 }
94
95 @Override
96 public void definitionListItem_() {
97 writeln("end:definitionListItem");
98 }
99
100 @Override
101 public void definition_() {
102 writeln("end:definition");
103 }
104
105 @Override
106 public void figure_() {
107 writeln("end:figure");
108 }
109
110 @Override
111 public void table_() {
112 writeln("end:table");
113 }
114
115 @Override
116 public void tableRows_() {
117 writeln("end:tableRows");
118 }
119
120 @Override
121 public void tableRow_() {
122 writeln("end:tableRow");
123 }
124
125 @Override
126 public void title_() {
127 writeln("end:title");
128 }
129
130 @Override
131 public void author_() {
132 writeln("end:author");
133 }
134
135 @Override
136 public void date_() {
137 writeln("end:date");
138 }
139
140 @Override
141 public void header_() {
142 writeln("end:header");
143 }
144
145 @Override
146 public void content_() {
147 writeln("end:content");
148 }
149
150 @Override
151 public void footer_() {
152 writeln("end:footer");
153 }
154
155 @Override
156 public void paragraph_() {
157 writeln("end:paragraph");
158 }
159
160 @Override
161 public void data_() {
162 writeln("end:data");
163 }
164
165 @Override
166 public void time_() {
167 writeln("end:time");
168 }
169
170 @Override
171 public void address_() {
172 writeln("end:address");
173 }
174
175 @Override
176 public void blockquote_() {
177 writeln("end:blockquote");
178 }
179
180 @Override
181 public void division_() {
182 writeln("end:division");
183 }
184
185 @Override
186 public void verbatim_() {
187 writeln("end:verbatim");
188 }
189
190 @Override
191 public void definedTerm_() {
192 writeln("end:definedTerm");
193 }
194
195 @Override
196 public void figureCaption_() {
197 writeln("end:figureCaption");
198 }
199
200 @Override
201 public void tableCell_() {
202 writeln("end:tableCell");
203 }
204
205 @Override
206 public void tableHeaderCell_() {
207 writeln("end:tableHeaderCell");
208 }
209
210 @Override
211 public void tableCaption_() {
212 writeln("end:tableCaption");
213 }
214
215 @Override
216 public void pageBreak() {
217 write("pageBreak");
218 }
219
220 @Override
221 public void anchor_() {
222 writeln("end:anchor");
223 }
224
225 @Override
226 public void link_() {
227 writeln("end:link");
228 }
229
230 @Override
231 public void inline_() {
232 writeln("end:inline");
233 }
234
235 @Override
236 public void italic() {
237 write("begin:italic");
238 }
239
240 @Override
241 public void italic_() {
242 writeln("end:italic");
243 }
244
245 @Override
246 public void bold() {
247 write("begin:bold");
248 }
249
250 @Override
251 public void bold_() {
252 writeln("end:bold");
253 }
254
255 @Override
256 public void monospaced() {
257 write("begin:monospaced");
258 }
259
260 @Override
261 public void monospaced_() {
262 writeln("end:monospaced");
263 }
264
265 @Override
266 public void nonBreakingSpace() {
267 write("nonBreakingSpace");
268 }
269
270 @Override
271 public void rawText(String text) {
272 write("rawText: " + text);
273 }
274
275 @Override
276 public void comment(String comment) {
277 write("comment: " + comment);
278 }
279
280 @Override
281 public void flush() {
282 try {
283 out.flush();
284 } catch (IOException e) {
285 LOGGER.warn("Could not flush sink", e);
286 }
287 }
288
289 @Override
290 public void close() {
291 try {
292 out.close();
293 } catch (IOException e) {
294 LOGGER.warn("Could not close sink", e);
295 }
296 }
297
298 @Override
299 public void head(SinkEventAttributes attributes) {
300 writeln("begin:head");
301 }
302
303 @Override
304 public void title(SinkEventAttributes attributes) {
305 writeln("begin:title");
306 }
307
308 @Override
309 public void author(SinkEventAttributes attributes) {
310 writeln("begin:author");
311 }
312
313 @Override
314 public void date(SinkEventAttributes attributes) {
315 writeln("begin:date");
316 }
317
318 @Override
319 public void body(SinkEventAttributes attributes) {
320 writeln("begin:body");
321 }
322
323 @Override
324 public void article(SinkEventAttributes attributes) {
325 writeln("begin:article");
326 }
327
328 @Override
329 public void navigation(SinkEventAttributes attributes) {
330 writeln("begin:navigation");
331 }
332
333 @Override
334 public void sidebar(SinkEventAttributes attributes) {
335 writeln("begin:head");
336 }
337
338 @Override
339 public void section(int level, SinkEventAttributes attributes) {
340 write("begin:section" + level);
341 }
342
343 @Override
344 public void section_(int level) {
345 writeln("end:section" + level);
346 }
347
348 @Override
349 public void sectionTitle(int level, SinkEventAttributes attributes) {
350 write("begin:sectionTitle" + level);
351 }
352
353 @Override
354 public void sectionTitle_(int level) {
355 writeln("end:sectionTitle" + level);
356 }
357
358 @Override
359 public void header(SinkEventAttributes attributes) {
360 write("begin:header");
361 }
362
363 @Override
364 public void content(SinkEventAttributes attributes) {
365 write("begin:content");
366 }
367
368 @Override
369 public void footer(SinkEventAttributes attributes) {
370 write("begin:footer");
371 }
372
373 @Override
374 public void list(SinkEventAttributes attributes) {
375 writeln("begin:list");
376 }
377
378 @Override
379 public void listItem(SinkEventAttributes attributes) {
380 write("begin:listItem");
381 }
382
383 @Override
384 public void numberedList(int numbering, SinkEventAttributes attributes) {
385 writeln("begin:numberedList, numbering: " + numbering);
386 }
387
388 @Override
389 public void numberedListItem(SinkEventAttributes attributes) {
390 write("begin:numberedListItem");
391 }
392
393 @Override
394 public void definitionList(SinkEventAttributes attributes) {
395 writeln("begin:definitionList");
396 }
397
398 @Override
399 public void definitionListItem(SinkEventAttributes attributes) {
400 write("begin:definitionListItem");
401 }
402
403 @Override
404 public void definition(SinkEventAttributes attributes) {
405 write("begin:definition");
406 }
407
408 @Override
409 public void definedTerm(SinkEventAttributes attributes) {
410 write("begin:definedTerm");
411 }
412
413 @Override
414 public void figure(SinkEventAttributes attributes) {
415 write("begin:figure" + SinkUtils.getAttributeString(attributes));
416 }
417
418 @Override
419 public void figureCaption(SinkEventAttributes attributes) {
420 write("begin:figureCaption");
421 }
422
423 @Override
424 public void figureGraphics(String src, SinkEventAttributes attributes) {
425 write("figureGraphics, name: " + src);
426 }
427
428 @Override
429 public void table(SinkEventAttributes attributes) {
430 writeln("begin:table");
431 }
432
433 @Override
434 public void tableRows(int[] justification, boolean grid) {
435 writeln("begin:tableRows");
436 }
437
438 @Override
439 public void tableRow(SinkEventAttributes attributes) {
440 write("begin:tableRow");
441 }
442
443 @Override
444 public void tableCell(SinkEventAttributes attributes) {
445 write("begin:tableCell");
446 }
447
448 @Override
449 public void tableHeaderCell(SinkEventAttributes attributes) {
450 write("begin:tableHeaderCell");
451 }
452
453 @Override
454 public void tableCaption(SinkEventAttributes attributes) {
455 write("begin:tableCaption");
456 }
457
458 @Override
459 public void paragraph(SinkEventAttributes attributes) {
460 write("begin:paragraph");
461 }
462
463 @Override
464 public void data(String value, SinkEventAttributes attributes) {
465 write("begin:data, value: " + value);
466 }
467
468 @Override
469 public void time(String datetime, SinkEventAttributes attributes) {
470 write("begin:time, datetime: " + datetime);
471 }
472
473 @Override
474 public void address(SinkEventAttributes attributes) {
475 write("begin:address");
476 }
477
478 @Override
479 public void blockquote(SinkEventAttributes attributes) {
480 write("begin:blockquote");
481 }
482
483 @Override
484 public void division(SinkEventAttributes attributes) {
485 write("begin:division");
486 }
487
488 @Override
489 public void verbatim(SinkEventAttributes attributes) {
490 boolean source = false;
491
492 if (attributes != null && attributes.isDefined(SinkEventAttributes.DECORATION)) {
493 source = "source"
494 .equals(attributes
495 .getAttribute(SinkEventAttributes.DECORATION)
496 .toString());
497 }
498
499 write("begin:verbatim, source: " + source);
500 }
501
502 @Override
503 public void horizontalRule(SinkEventAttributes attributes) {
504 write("horizontalRule");
505 }
506
507 @Override
508 public void anchor(String name, SinkEventAttributes attributes) {
509 write("begin:anchor, name: " + name);
510 }
511
512 @Override
513 public void link(String name, SinkEventAttributes attributes) {
514 write("begin:link, name: " + name);
515 }
516
517 @Override
518 public void inline(SinkEventAttributes attributes) {
519 write("begin:inline");
520 }
521
522 @Override
523 public void lineBreak(SinkEventAttributes attributes) {
524 write("lineBreak");
525 }
526
527 @Override
528 public void lineBreakOpportunity(SinkEventAttributes attributes) {
529 write("lineBreakOpportunity");
530 }
531
532 @Override
533 public void text(String text, SinkEventAttributes attributes) {
534 write("text: " + text);
535 }
536
537 @Override
538 public void unknown(String name, Object[] requiredParams, SinkEventAttributes attributes) {
539 write("unknown: " + name);
540 }
541
542
543
544
545
546
547 private void write(String text) {
548 try {
549 out.write(text + EOL);
550 } catch (IOException e) {
551 LOGGER.warn("Could not write to sink", e);
552 }
553 }
554
555
556
557
558
559
560 private void writeln(String text) {
561 write(text);
562 write(EOL);
563 }
564 }