|
21 | 21 |
|
22 | 22 | package com.igormaznitsa.jcp.removers;
|
23 | 23 |
|
| 24 | +import static com.igormaznitsa.jcp.directives.AbstractDirectiveHandler.PREFIX_FOR_KEEPING_LINES; |
| 25 | +import static com.igormaznitsa.jcp.directives.AbstractDirectiveHandler.PREFIX_FOR_KEEPING_LINES_PROCESSED_DIRECTIVES; |
| 26 | + |
24 | 27 | import java.io.IOException;
|
25 | 28 | import java.io.Reader;
|
26 | 29 | import java.io.Writer;
|
@@ -71,18 +74,35 @@ public Writer process() throws IOException {
|
71 | 74 | switch (chr) {
|
72 | 75 | case '$':
|
73 | 76 | case '#': {
|
74 |
| - jcpBuffer.setLength(0); |
75 |
| - skipTillNextString(); |
76 |
| - state = STATE_NORMAL; |
77 |
| - } |
78 |
| - break; |
79 |
| - default: { |
80 |
| - if (Character.isSpaceChar(chr) && this.whiteSpaceAllowed) { |
81 |
| - jcpBuffer.append((char) chr); |
| 77 | + if (jcpBuffer.toString().equals("//") || |
| 78 | + (jcpBuffer.substring(2).trim().isEmpty() && this.whiteSpaceAllowed)) { |
| 79 | + jcpBuffer.setLength(0); |
| 80 | + skipTillNextString(); |
| 81 | + state = STATE_NORMAL; |
82 | 82 | } else {
|
83 | 83 | this.dstWriter.write(jcpBuffer.toString());
|
84 | 84 | this.dstWriter.write(chr);
|
| 85 | + this.copyTillNextString(); |
| 86 | + } |
| 87 | + } |
| 88 | + break; |
| 89 | + default: { |
| 90 | + jcpBuffer.append((char) chr); |
| 91 | + final String currentBuffer = jcpBuffer.toString(); |
| 92 | + if (currentBuffer.startsWith(PREFIX_FOR_KEEPING_LINES) || |
| 93 | + currentBuffer.startsWith(PREFIX_FOR_KEEPING_LINES_PROCESSED_DIRECTIVES)) { |
| 94 | + jcpBuffer.setLength(0); |
| 95 | + this.skipTillNextString(); |
| 96 | + state = STATE_NORMAL; |
| 97 | + } else if (chr == '\n') { |
| 98 | + this.dstWriter.write(currentBuffer); |
| 99 | + jcpBuffer.setLength(0); |
| 100 | + state = STATE_NORMAL; |
| 101 | + } else if ((!PREFIX_FOR_KEEPING_LINES.startsWith(currentBuffer) && |
| 102 | + !PREFIX_FOR_KEEPING_LINES_PROCESSED_DIRECTIVES.startsWith(currentBuffer)) && |
| 103 | + (!this.whiteSpaceAllowed || !Character.isSpaceChar(chr))) { |
85 | 104 | jcpBuffer.setLength(0);
|
| 105 | + this.dstWriter.write(currentBuffer); |
86 | 106 | this.copyTillNextString();
|
87 | 107 | state = STATE_NORMAL;
|
88 | 108 | }
|
|
0 commit comments