1 package org.apache.maven.shared.filtering;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.FilterReader;
23 import java.io.Reader;
24 import java.util.LinkedHashSet;
25
26 import org.codehaus.plexus.interpolation.multi.DelimiterSpecification;
27
28
29
30
31 public abstract class AbstractFilterReaderLineEnding
32 extends FilterReader
33 {
34
35 private String escapeString;
36
37
38
39
40 protected boolean useEscape = false;
41
42
43
44
45 private boolean preserveEscapeString = false;
46
47 protected LinkedHashSet<DelimiterSpecification> delimiters = new LinkedHashSet<>();
48
49
50
51
52
53 protected int markLength = 255;
54
55
56 protected AbstractFilterReaderLineEnding( Reader in )
57 {
58 super( in );
59 }
60
61
62
63
64 public String getEscapeString()
65 {
66 return escapeString;
67 }
68
69
70
71
72 public void setEscapeString( String escapeString )
73 {
74
75 if ( escapeString != null && escapeString.length() >= 1 )
76 {
77 this.escapeString = escapeString;
78 this.useEscape = true;
79 calculateMarkLength();
80 }
81 }
82
83
84
85
86 public boolean isPreserveEscapeString()
87 {
88 return preserveEscapeString;
89 }
90
91
92
93
94 public void setPreserveEscapeString( boolean preserveEscapeString )
95 {
96 this.preserveEscapeString = preserveEscapeString;
97 }
98
99 protected void calculateMarkLength()
100 {
101
102 markLength = 255;
103
104
105 if ( escapeString != null )
106 {
107 markLength += escapeString.length();
108 }
109 for ( DelimiterSpecification spec : delimiters )
110 {
111 markLength += spec.getBegin().length();
112 markLength += spec.getEnd().length();
113
114 }
115 }
116 }