mirror of
https://github.com/apache/commons-csv.git
synced 2025-02-16 15:07:07 +00:00
[CSV-150] Escaping is not disableable
This commit is contained in:
parent
0546fb5653
commit
ca1ed20288
@ -50,6 +50,7 @@
|
||||
<action type="fix" dev="ggregory" due-to="Dávid Szigecsán">Migrate CSVFormat#print(File, Charset) to NIO #445.</action>
|
||||
<action type="fix" dev="ggregory" due-to="Dávid Szigecsán">Fix documentation for CSVFormat private constructor #466.</action>
|
||||
<action type="fix" issue="CSV-294" dev="ggregory" due-to="Joern Huxhorn, Gary Gregory">CSVFormat does not support explicit " as escape char.</action>
|
||||
<action type="fix" issue="CSV-150" dev="ggregory" due-to="dota17, Gary Gregory, Jörn Huxhorn">Escaping is not disableable.</action>
|
||||
<!-- UPDATE -->
|
||||
<action type="update" dev="ggregory" due-to="Dependabot">Bump commons-codec:commons-codec from 1.16.1 to 1.17.1 #422, #449.</action>
|
||||
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 69 to 74 #435, #452, #465, #468.</action>
|
||||
|
@ -32,19 +32,12 @@ final class Lexer implements Closeable {
|
||||
private static final String CR_STRING = Character.toString(Constants.CR);
|
||||
private static final String LF_STRING = Character.toString(Constants.LF);
|
||||
|
||||
/**
|
||||
* Constant char to use for disabling comments, escapes, and encapsulation. The value -2 is used because it
|
||||
* won't be confused with an EOF signal (-1), and because the Unicode value {@code FFFE} would be encoded as two
|
||||
* chars (using surrogates) and thus there should never be a collision with a real text char.
|
||||
*/
|
||||
private static final char DISABLED = '\ufffe';
|
||||
|
||||
private final char[] delimiter;
|
||||
private final char[] delimiterBuf;
|
||||
private final char[] escapeDelimiterBuf;
|
||||
private final char escape;
|
||||
private final char quoteChar;
|
||||
private final char commentStart;
|
||||
private final int escape;
|
||||
private final int quoteChar;
|
||||
private final int commentStart;
|
||||
private final boolean ignoreSurroundingSpaces;
|
||||
private final boolean ignoreEmptyLines;
|
||||
private final boolean lenientEof;
|
||||
@ -59,9 +52,9 @@ final class Lexer implements Closeable {
|
||||
Lexer(final CSVFormat format, final ExtendedBufferedReader reader) {
|
||||
this.reader = reader;
|
||||
this.delimiter = format.getDelimiterCharArray();
|
||||
this.escape = mapNullToDisabled(format.getEscapeCharacter());
|
||||
this.quoteChar = mapNullToDisabled(format.getQuoteCharacter());
|
||||
this.commentStart = mapNullToDisabled(format.getCommentMarker());
|
||||
this.escape = nullToDisabled(format.getEscapeCharacter());
|
||||
this.quoteChar = nullToDisabled(format.getQuoteCharacter());
|
||||
this.commentStart = nullToDisabled(format.getCommentMarker());
|
||||
this.ignoreSurroundingSpaces = format.getIgnoreSurroundingSpaces();
|
||||
this.ignoreEmptyLines = format.getIgnoreEmptyLines();
|
||||
this.lenientEof = format.getLenientEof();
|
||||
@ -197,8 +190,8 @@ final class Lexer implements Closeable {
|
||||
return ch == Constants.LF || ch == Constants.CR || ch == Constants.UNDEFINED;
|
||||
}
|
||||
|
||||
private char mapNullToDisabled(final Character c) {
|
||||
return c == null ? DISABLED : c.charValue(); // N.B. Explicit (un)boxing is intentional
|
||||
private int nullToDisabled(final Character c) {
|
||||
return c == null ? Constants.UNDEFINED : c.charValue(); // Explicit unboxing
|
||||
}
|
||||
|
||||
/**
|
||||
@ -428,7 +421,7 @@ final class Lexer implements Closeable {
|
||||
} else {
|
||||
final int unescaped = readEscape();
|
||||
if (unescaped == EOF) { // unexpected char after escape
|
||||
token.content.append(escape).append((char) reader.getLastChar());
|
||||
token.content.append((char) escape).append((char) reader.getLastChar());
|
||||
} else {
|
||||
token.content.append((char) unescaped);
|
||||
}
|
||||
|
@ -26,7 +26,6 @@ import org.apache.commons.csv.CSVParser;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@Disabled
|
||||
public class JiraCsv150Test {
|
||||
|
||||
private void testDisable(final CSVFormat csvFormat, final StringReader stringReader) throws IOException {
|
||||
|
Loading…
x
Reference in New Issue
Block a user