summaryrefslogtreecommitdiff
path: root/tutorial/examples/decorator/ReturnSpecifier.oj
diff options
context:
space:
mode:
Diffstat (limited to 'tutorial/examples/decorator/ReturnSpecifier.oj')
-rw-r--r--tutorial/examples/decorator/ReturnSpecifier.oj39
1 files changed, 39 insertions, 0 deletions
diff --git a/tutorial/examples/decorator/ReturnSpecifier.oj b/tutorial/examples/decorator/ReturnSpecifier.oj
new file mode 100644
index 0000000..e1e4f73
--- /dev/null
+++ b/tutorial/examples/decorator/ReturnSpecifier.oj
@@ -0,0 +1,39 @@
+package exampls.decorator;
+
+
+import java.io.Writer;
+import java.io.IOException;
+
+
+public class ReturnSpecifier instantiates DecoratorClass
+ decorates Writer in out
+{
+ private static final char[] mark = { '\\', '<' };
+
+ private Writer out;
+
+ public ReturnSpecifier(Writer out) {
+ this.out = out;
+ }
+
+ public void write(char cbuf[], int off, int len)
+ throws IOException
+ {
+ int done = off;
+ for (int i = done; i < off + len; ++i) {
+ if (cbuf[i] == Character.LINE_SEPARATOR
+ || cbuf[i] == '\n')
+ {
+ out.write(cbuf, done, i - done);
+ // print a mark for carriage return
+ out.write(mark, 0, mark.length);
+ // print a carriage return
+ out.write(cbuf, i, 1);
+ done = i + 1;
+ }
+ }
+ out.write(cbuf, done, off + len - done);
+ }
+
+
+}