1 package org
.asamk
.signal
;
3 import org
.slf4j
.helpers
.MessageFormatter
;
5 import java
.io
.BufferedWriter
;
6 import java
.io
.IOException
;
7 import java
.io
.OutputStream
;
8 import java
.io
.OutputStreamWriter
;
11 public final class PlainTextWriterImpl
implements PlainTextWriter
{
13 private final Writer writer
;
15 private PlainTextWriter indentedWriter
;
17 public PlainTextWriterImpl(final OutputStream outputStream
) {
18 this.writer
= new BufferedWriter(new OutputStreamWriter(outputStream
));
22 public void println(String format
, Object
... args
) {
23 final var message
= MessageFormatter
.arrayFormat(format
, args
).getMessage();
26 writer
.write(message
);
27 writer
.write(System
.lineSeparator());
29 } catch (IOException e
) {
30 throw new AssertionError(e
);
35 public PlainTextWriter
indentedWriter() {
36 if (indentedWriter
== null) {
37 indentedWriter
= new IndentedPlainTextWriter(this, writer
);
39 return indentedWriter
;
42 private static final class IndentedPlainTextWriter
implements PlainTextWriter
{
44 private final static int INDENTATION
= 2;
46 private final String spaces
= " ".repeat(INDENTATION
);
47 private final PlainTextWriter plainTextWriter
;
48 private final Writer writer
;
50 private PlainTextWriter indentedWriter
;
52 private IndentedPlainTextWriter(final PlainTextWriter plainTextWriter
, final Writer writer
) {
53 this.plainTextWriter
= plainTextWriter
;
58 public void println(final String format
, final Object
... args
) {
61 } catch (IOException e
) {
62 throw new AssertionError(e
);
64 plainTextWriter
.println(format
, args
);
68 public PlainTextWriter
indentedWriter() {
69 if (indentedWriter
== null) {
70 indentedWriter
= new IndentedPlainTextWriter(this, writer
);
72 return indentedWriter
;