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<DelimiterSpecification>();
48
49
50
51
52 protected int markLength = 128;
53
54 protected AbstractFilterReaderLineEnding( Reader in )
55 {
56 super( in );
57 }
58
59
60
61
62 public String getEscapeString()
63 {
64 return escapeString;
65 }
66
67
68
69
70 public void setEscapeString( String escapeString )
71 {
72
73 if ( escapeString != null && escapeString.length() >= 1 )
74 {
75 this.escapeString = escapeString;
76 this.useEscape = escapeString != null && escapeString.length() >= 1;
77 calculateMarkLength();
78 }
79 }
80
81
82
83
84 public boolean isPreserveEscapeString()
85 {
86 return preserveEscapeString;
87 }
88
89
90
91
92 public void setPreserveEscapeString( boolean preserveEscapeString )
93 {
94 this.preserveEscapeString = preserveEscapeString;
95 }
96
97 protected void calculateMarkLength()
98 {
99 markLength = 128;
100
101 if ( escapeString != null )
102 {
103
104 markLength += escapeString.length();
105
106 }
107 for ( DelimiterSpecification spec : delimiters )
108 {
109 markLength += spec.getBegin().length();
110 markLength += spec.getEnd().length();
111
112 }
113 }
114 }