Modified:
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Lexer.java.html
==============================================================================
---
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Lexer.java.html
(original)
+++
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Lexer.java.html
Wed Sep 25 02:11:29 2024
@@ -17,66 +17,71 @@
package org.apache.commons.csv;
-import static org.apache.commons.csv.Constants.BACKSPACE;
-import static org.apache.commons.csv.Constants.CR;
-import static org.apache.commons.csv.Constants.FF;
-import static org.apache.commons.csv.Constants.LF;
-import static org.apache.commons.csv.Constants.TAB;
-import static org.apache.commons.csv.Constants.UNDEFINED;
-import static org.apache.commons.csv.Token.Type.COMMENT;
-import static org.apache.commons.csv.Token.Type.EORECORD;
-import static org.apache.commons.csv.Token.Type.INVALID;
-import static org.apache.commons.csv.Token.Type.TOKEN;
import static org.apache.commons.io.IOUtils.EOF;
import java.io.Closeable;
import java.io.IOException;
+import org.apache.commons.io.IOUtils;
+
/**
* Lexical analyzer.
*/
final class Lexer implements Closeable {
-<span class="fc" id="L40"> private static final String CR_STRING =
Character.toString(CR);</span>
-<span class="fc" id="L41"> private static final String LF_STRING =
Character.toString(LF);</span>
-
- /**
- * 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';
+<span class="fc" id="L32"> private static final String CR_STRING =
Character.toString(Constants.CR);</span>
+<span class="fc" id="L33"> private static final String LF_STRING =
Character.toString(Constants.LF);</span>
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;
private final boolean trailingData;
- /** The input stream */
+ /** The buffered reader. */
private final ExtendedBufferedReader reader;
private String firstEol;
private boolean isLastTokenDelimiter;
-<span class="fc" id="L67"> Lexer(final CSVFormat format, final
ExtendedBufferedReader reader) {</span>
-<span class="fc" id="L68"> this.reader = reader;</span>
-<span class="fc" id="L69"> this.delimiter =
format.getDelimiterCharArray();</span>
-<span class="fc" id="L70"> this.escape =
mapNullToDisabled(format.getEscapeCharacter());</span>
-<span class="fc" id="L71"> this.quoteChar =
mapNullToDisabled(format.getQuoteCharacter());</span>
-<span class="fc" id="L72"> this.commentStart =
mapNullToDisabled(format.getCommentMarker());</span>
-<span class="fc" id="L73"> this.ignoreSurroundingSpaces =
format.getIgnoreSurroundingSpaces();</span>
-<span class="fc" id="L74"> this.ignoreEmptyLines =
format.getIgnoreEmptyLines();</span>
-<span class="fc" id="L75"> this.lenientEof =
format.getLenientEof();</span>
-<span class="fc" id="L76"> this.trailingData =
format.getTrailingData();</span>
-<span class="fc" id="L77"> this.delimiterBuf = new
char[delimiter.length - 1];</span>
-<span class="fc" id="L78"> this.escapeDelimiterBuf = new char[2 *
delimiter.length - 1];</span>
-<span class="fc" id="L79"> }</span>
+<span class="fc" id="L52"> Lexer(final CSVFormat format, final
ExtendedBufferedReader reader) {</span>
+<span class="fc" id="L53"> this.reader = reader;</span>
+<span class="fc" id="L54"> this.delimiter =
format.getDelimiterCharArray();</span>
+<span class="fc" id="L55"> this.escape =
nullToDisabled(format.getEscapeCharacter());</span>
+<span class="fc" id="L56"> this.quoteChar =
nullToDisabled(format.getQuoteCharacter());</span>
+<span class="fc" id="L57"> this.commentStart =
nullToDisabled(format.getCommentMarker());</span>
+<span class="fc" id="L58"> this.ignoreSurroundingSpaces =
format.getIgnoreSurroundingSpaces();</span>
+<span class="fc" id="L59"> this.ignoreEmptyLines =
format.getIgnoreEmptyLines();</span>
+<span class="fc" id="L60"> this.lenientEof =
format.getLenientEof();</span>
+<span class="fc" id="L61"> this.trailingData =
format.getTrailingData();</span>
+<span class="fc" id="L62"> this.delimiterBuf = new
char[delimiter.length - 1];</span>
+<span class="fc" id="L63"> this.escapeDelimiterBuf = new char[2 *
delimiter.length - 1];</span>
+<span class="fc" id="L64"> }</span>
+
+ /**
+ * Appends the next escaped character to the token's content.
+ *
+ * @param token the current token
+ * @throws IOException on stream access error
+ * @throws CSVException Thrown on invalid input.
+ */
+ private void appendNextEscapedCharacterToToken(final Token token) throws
IOException {
+<span class="fc bfc" id="L74" title="All 2 branches covered."> if
(isEscapeDelimiter()) {</span>
+<span class="fc" id="L75"> token.content.append(delimiter);</span>
+ } else {
+<span class="fc" id="L77"> final int unescaped =
readEscape();</span>
+<span class="fc bfc" id="L78" title="All 2 branches covered."> if
(unescaped == EOF) { // unexpected char after escape</span>
+<span class="fc" id="L79"> token.content.append((char)
escape).append((char) reader.getLastChar());</span>
+ } else {
+<span class="fc" id="L81"> token.content.append((char)
unescaped);</span>
+ }
+ }
+<span class="fc" id="L84"> }</span>
/**
* Closes resources.
@@ -86,8 +91,8 @@ final class Lexer implements Closeable {
*/
@Override
public void close() throws IOException {
-<span class="fc" id="L89"> reader.close();</span>
-<span class="fc" id="L90"> }</span>
+<span class="fc" id="L94"> reader.close();</span>
+<span class="fc" id="L95"> }</span>
/**
* Returns the current character position
@@ -95,7 +100,7 @@ final class Lexer implements Closeable {
* @return the current character position
*/
long getCharacterPosition() {
-<span class="fc" id="L98"> return reader.getPosition();</span>
+<span class="fc" id="L103"> return reader.getPosition();</span>
}
/**
@@ -104,23 +109,23 @@ final class Lexer implements Closeable {
* @return the current line number
*/
long getCurrentLineNumber() {
-<span class="fc" id="L107"> return reader.getCurrentLineNumber();</span>
+<span class="fc" id="L112"> return reader.getLineNumber();</span>
}
- String getFirstEol(){
-<span class="fc" id="L111"> return firstEol;</span>
+ String getFirstEol() {
+<span class="fc" id="L116"> return firstEol;</span>
}
boolean isClosed() {
-<span class="fc" id="L115"> return reader.isClosed();</span>
+<span class="fc" id="L120"> return reader.isClosed();</span>
}
boolean isCommentStart(final int ch) {
-<span class="fc bfc" id="L119" title="All 2 branches covered."> return
ch == commentStart;</span>
+<span class="fc bfc" id="L124" title="All 2 branches covered."> return
ch == commentStart;</span>
}
/**
- * Determine whether the next characters constitute a delimiter through
{@link ExtendedBufferedReader#lookAhead(char[])}.
+ * Determine whether the next characters constitute a delimiter through
{@link ExtendedBufferedReader#peek(char[])}.
*
* @param ch
* the current character.
@@ -128,23 +133,23 @@ final class Lexer implements Closeable {
* @throws IOException If an I/O error occurs.
*/
boolean isDelimiter(final int ch) throws IOException {
-<span class="fc" id="L131"> isLastTokenDelimiter = false;</span>
-<span class="fc bfc" id="L132" title="All 2 branches covered."> if (ch
!= delimiter[0]) {</span>
-<span class="fc" id="L133"> return false;</span>
- }
-<span class="fc bfc" id="L135" title="All 2 branches covered."> if
(delimiter.length == 1) {</span>
-<span class="fc" id="L136"> isLastTokenDelimiter = true;</span>
-<span class="fc" id="L137"> return true;</span>
- }
-<span class="fc" id="L139"> reader.lookAhead(delimiterBuf);</span>
-<span class="fc bfc" id="L140" title="All 2 branches covered."> for
(int i = 0; i < delimiterBuf.length; i++) {</span>
-<span class="fc bfc" id="L141" title="All 2 branches covered."> if
(delimiterBuf[i] != delimiter[i+1]) {</span>
-<span class="fc" id="L142"> return false;</span>
- }
- }
-<span class="fc" id="L145"> final int count = reader.read(delimiterBuf,
0, delimiterBuf.length);</span>
-<span class="fc bfc" id="L146" title="All 2 branches covered.">
isLastTokenDelimiter = count != EOF;</span>
-<span class="fc" id="L147"> return isLastTokenDelimiter;</span>
+<span class="fc" id="L136"> isLastTokenDelimiter = false;</span>
+<span class="fc bfc" id="L137" title="All 2 branches covered."> if (ch
!= delimiter[0]) {</span>
+<span class="fc" id="L138"> return false;</span>
+ }
+<span class="fc bfc" id="L140" title="All 2 branches covered."> if
(delimiter.length == 1) {</span>
+<span class="fc" id="L141"> isLastTokenDelimiter = true;</span>
+<span class="fc" id="L142"> return true;</span>
+ }
+<span class="fc" id="L144"> reader.peek(delimiterBuf);</span>
+<span class="fc bfc" id="L145" title="All 2 branches covered."> for
(int i = 0; i < delimiterBuf.length; i++) {</span>
+<span class="fc bfc" id="L146" title="All 2 branches covered."> if
(delimiterBuf[i] != delimiter[i + 1]) {</span>
+<span class="fc" id="L147"> return false;</span>
+ }
+ }
+<span class="fc" id="L150"> final int count = reader.read(delimiterBuf,
0, delimiterBuf.length);</span>
+<span class="fc bfc" id="L151" title="All 2 branches covered.">
isLastTokenDelimiter = count != EOF;</span>
+<span class="fc" id="L152"> return isLastTokenDelimiter;</span>
}
/**
@@ -153,7 +158,7 @@ final class Lexer implements Closeable {
* @return true if the given character indicates the end of the file.
*/
boolean isEndOfFile(final int ch) {
-<span class="fc bfc" id="L156" title="All 2 branches covered."> return
ch == EOF;</span>
+<span class="fc bfc" id="L161" title="All 2 branches covered."> return
ch == EOF;</span>
}
/**
@@ -162,11 +167,11 @@ final class Lexer implements Closeable {
* @return true if the given character is the escape character.
*/
boolean isEscape(final int ch) {
-<span class="fc bfc" id="L165" title="All 2 branches covered."> return
ch == escape;</span>
+<span class="fc bfc" id="L170" title="All 2 branches covered."> return
ch == escape;</span>
}
/**
- * Tests if the next characters constitute a escape delimiter through
{@link ExtendedBufferedReader#lookAhead(char[])}.
+ * Tests if the next characters constitute a escape delimiter through
{@link ExtendedBufferedReader#peek(char[])}.
*
* For example, for delimiter "[|]" and escape '!', return true
if the next characters constitute "![!|!]".
*
@@ -174,25 +179,25 @@ final class Lexer implements Closeable {
* @throws IOException If an I/O error occurs.
*/
boolean isEscapeDelimiter() throws IOException {
-<span class="fc" id="L177"> reader.lookAhead(escapeDelimiterBuf);</span>
-<span class="fc bfc" id="L178" title="All 2 branches covered."> if
(escapeDelimiterBuf[0] != delimiter[0]) {</span>
-<span class="fc" id="L179"> return false;</span>
+<span class="fc" id="L182"> reader.peek(escapeDelimiterBuf);</span>
+<span class="fc bfc" id="L183" title="All 2 branches covered."> if
(escapeDelimiterBuf[0] != delimiter[0]) {</span>
+<span class="fc" id="L184"> return false;</span>
}
-<span class="fc bfc" id="L181" title="All 2 branches covered."> for
(int i = 1; i < delimiter.length; i++) {</span>
-<span class="pc bpc" id="L182" title="1 of 4 branches missed."> if
(escapeDelimiterBuf[2 * i] != delimiter[i] || escapeDelimiterBuf[2 * i - 1] !=
escape) {</span>
-<span class="fc" id="L183"> return false;</span>
+<span class="fc bfc" id="L186" title="All 2 branches covered."> for
(int i = 1; i < delimiter.length; i++) {</span>
+<span class="pc bpc" id="L187" title="1 of 4 branches missed."> if
(escapeDelimiterBuf[2 * i] != delimiter[i] || escapeDelimiterBuf[2 * i - 1] !=
escape) {</span>
+<span class="fc" id="L188"> return false;</span>
}
}
-<span class="fc" id="L186"> final int count =
reader.read(escapeDelimiterBuf, 0, escapeDelimiterBuf.length);</span>
-<span class="pc bpc" id="L187" title="1 of 2 branches missed."> return
count != EOF;</span>
+<span class="fc" id="L191"> final int count =
reader.read(escapeDelimiterBuf, 0, escapeDelimiterBuf.length);</span>
+<span class="pc bpc" id="L192" title="1 of 2 branches missed."> return
count != EOF;</span>
}
private boolean isMetaChar(final int ch) {
-<span class="fc bfc" id="L191" title="All 6 branches covered."> return
ch == escape || ch == quoteChar || ch == commentStart;</span>
+<span class="fc bfc" id="L196" title="All 6 branches covered."> return
ch == escape || ch == quoteChar || ch == commentStart;</span>
}
boolean isQuoteChar(final int ch) {
-<span class="fc bfc" id="L195" title="All 2 branches covered."> return
ch == quoteChar;</span>
+<span class="fc bfc" id="L200" title="All 2 branches covered."> return
ch == quoteChar;</span>
}
/**
@@ -202,11 +207,7 @@ final class Lexer implements Closeable {
* @return true if the character is at the start of a line.
*/
boolean isStartOfLine(final int ch) {
-<span class="fc bfc" id="L205" title="All 6 branches covered."> return
ch == LF || ch == CR || ch == UNDEFINED;</span>
- }
-
- private char mapNullToDisabled(final Character c) {
-<span class="fc bfc" id="L209" title="All 2 branches covered."> return
c == null ? DISABLED : c.charValue();</span>
+<span class="fc bfc" id="L210" title="All 6 branches covered."> return
ch == Constants.LF || ch == Constants.CR || ch == Constants.UNDEFINED;</span>
}
/**
@@ -215,93 +216,87 @@ final class Lexer implements Closeable {
* A token corresponds to a term, a record change or an end-of-file
indicator.
* </p>
*
- * @param token
- * an existing Token object to reuse. The caller is responsible
for initializing the Token.
+ * @param token an existing Token object to reuse. The caller is
responsible for initializing the Token.
* @return the next token found.
- * @throws IOException on stream access error.
+ * @throws IOException on stream access error.
+ * @throws CSVException Thrown on invalid input.
*/
Token nextToken(final Token token) throws IOException {
-
// Get the last read char (required for empty line detection)
<span class="fc" id="L226"> int lastChar = reader.getLastChar();</span>
-
// read the next char and set eol
-<span class="fc" id="L229"> int c = reader.read();</span>
- /*
- * Note: The following call will swallow LF if c == CR. But we don't
need to know if the last char was CR or LF
- * - they are equivalent here.
- */
-<span class="fc" id="L234"> boolean eol = readEndOfLine(c);</span>
-
+<span class="fc" id="L228"> int c = reader.read();</span>
+ // Note: The following call will swallow LF if c == CR. But we don't
need to know if the last char was CR or LF - they are equivalent here.
+<span class="fc" id="L230"> boolean eol = readEndOfLine(c);</span>
// empty line detection: eol AND (last char was EOL or beginning)
-<span class="fc bfc" id="L237" title="All 2 branches covered."> if
(ignoreEmptyLines) {</span>
-<span class="fc bfc" id="L238" title="All 4 branches covered.">
while (eol && isStartOfLine(lastChar)) {</span>
+<span class="fc bfc" id="L232" title="All 2 branches covered."> if
(ignoreEmptyLines) {</span>
+<span class="fc bfc" id="L233" title="All 4 branches covered.">
while (eol && isStartOfLine(lastChar)) {</span>
// Go on char ahead ...
-<span class="fc" id="L240"> lastChar = c;</span>
-<span class="fc" id="L241"> c = reader.read();</span>
-<span class="fc" id="L242"> eol = readEndOfLine(c);</span>
+<span class="fc" id="L235"> lastChar = c;</span>
+<span class="fc" id="L236"> c = reader.read();</span>
+<span class="fc" id="L237"> eol = readEndOfLine(c);</span>
// reached the end of the file without any content (empty line
at the end)
-<span class="fc bfc" id="L244" title="All 2 branches covered.">
if (isEndOfFile(c)) {</span>
-<span class="fc" id="L245"> token.type =
Token.Type.EOF;</span>
+<span class="fc bfc" id="L239" title="All 2 branches covered.">
if (isEndOfFile(c)) {</span>
+<span class="fc" id="L240"> token.type =
Token.Type.EOF;</span>
// don't set token.isReady here because no content
-<span class="fc" id="L247"> return token;</span>
+<span class="fc" id="L242"> return token;</span>
}
}
}
-
// Did we reach EOF during the last iteration already? EOF
-<span class="fc bfc" id="L253" title="All 6 branches covered."> if
(isEndOfFile(lastChar) || !isLastTokenDelimiter && isEndOfFile(c))
{</span>
-<span class="fc" id="L254"> token.type = Token.Type.EOF;</span>
+<span class="fc bfc" id="L247" title="All 6 branches covered."> if
(isEndOfFile(lastChar) || !isLastTokenDelimiter && isEndOfFile(c))
{</span>
+<span class="fc" id="L248"> token.type = Token.Type.EOF;</span>
// don't set token.isReady here because no content
-<span class="fc" id="L256"> return token;</span>
+<span class="fc" id="L250"> return token;</span>
}
-
-<span class="fc bfc" id="L259" title="All 4 branches covered."> if
(isStartOfLine(lastChar) && isCommentStart(c)) {</span>
-<span class="fc" id="L260"> final String line =
reader.readLine();</span>
-<span class="fc bfc" id="L261" title="All 2 branches covered."> if
(line == null) {</span>
-<span class="fc" id="L262"> token.type = Token.Type.EOF;</span>
+<span class="fc bfc" id="L252" title="All 4 branches covered."> if
(isStartOfLine(lastChar) && isCommentStart(c)) {</span>
+<span class="fc" id="L253"> final String line =
reader.readLine();</span>
+<span class="fc bfc" id="L254" title="All 2 branches covered."> if
(line == null) {</span>
+<span class="fc" id="L255"> token.type = Token.Type.EOF;</span>
// don't set token.isReady here because no content
-<span class="fc" id="L264"> return token;</span>
+<span class="fc" id="L257"> return token;</span>
}
-<span class="fc" id="L266"> final String comment =
line.trim();</span>
-<span class="fc" id="L267"> token.content.append(comment);</span>
-<span class="fc" id="L268"> token.type = COMMENT;</span>
-<span class="fc" id="L269"> return token;</span>
+<span class="fc" id="L259"> final String comment =
line.trim();</span>
+<span class="fc" id="L260"> token.content.append(comment);</span>
+<span class="fc" id="L261"> token.type = Token.Type.COMMENT;</span>
+<span class="fc" id="L262"> return token;</span>
}
-
// Important: make sure a new char gets consumed in each iteration
-<span class="fc bfc" id="L273" title="All 2 branches covered."> while
(token.type == INVALID) {</span>
+<span class="fc bfc" id="L265" title="All 2 branches covered."> while
(token.type == Token.Type.INVALID) {</span>
// ignore whitespaces at beginning of a token
-<span class="fc bfc" id="L275" title="All 2 branches covered."> if
(ignoreSurroundingSpaces) {</span>
-<span class="fc bfc" id="L276" title="All 6 branches covered.">
while (Character.isWhitespace((char)c) && !isDelimiter(c) &&
!eol) {</span>
-<span class="fc" id="L277"> c = reader.read();</span>
-<span class="fc" id="L278"> eol = readEndOfLine(c);</span>
+<span class="fc bfc" id="L267" title="All 2 branches covered."> if
(ignoreSurroundingSpaces) {</span>
+<span class="fc bfc" id="L268" title="All 6 branches covered.">
while (Character.isWhitespace((char) c) && !isDelimiter(c) &&
!eol) {</span>
+<span class="fc" id="L269"> c = reader.read();</span>
+<span class="fc" id="L270"> eol = readEndOfLine(c);</span>
}
}
-
// ok, start of token reached: encapsulated, or token
-<span class="fc bfc" id="L283" title="All 2 branches covered."> if
(isDelimiter(c)) {</span>
+<span class="fc bfc" id="L274" title="All 2 branches covered."> if
(isDelimiter(c)) {</span>
// empty token return TOKEN("")
-<span class="fc" id="L285"> token.type = TOKEN;</span>
-<span class="fc bfc" id="L286" title="All 2 branches covered."> }
else if (eol) {</span>
+<span class="fc" id="L276"> token.type =
Token.Type.TOKEN;</span>
+<span class="fc bfc" id="L277" title="All 2 branches covered."> }
else if (eol) {</span>
// empty token return EORECORD("")
// noop: token.content.append("");
-<span class="fc" id="L289"> token.type = EORECORD;</span>
-<span class="fc bfc" id="L290" title="All 2 branches covered."> }
else if (isQuoteChar(c)) {</span>
+<span class="fc" id="L280"> token.type =
Token.Type.EORECORD;</span>
+<span class="fc bfc" id="L281" title="All 2 branches covered."> }
else if (isQuoteChar(c)) {</span>
// consume encapsulated token
-<span class="fc" id="L292">
parseEncapsulatedToken(token);</span>
-<span class="fc bfc" id="L293" title="All 2 branches covered."> }
else if (isEndOfFile(c)) {</span>
+<span class="fc" id="L283">
parseEncapsulatedToken(token);</span>
+<span class="fc bfc" id="L284" title="All 2 branches covered."> }
else if (isEndOfFile(c)) {</span>
// end of file return EOF()
// noop: token.content.append("");
-<span class="fc" id="L296"> token.type = Token.Type.EOF;</span>
-<span class="fc" id="L297"> token.isReady = true; // there is
data at EOF</span>
+<span class="fc" id="L287"> token.type = Token.Type.EOF;</span>
+<span class="fc" id="L288"> token.isReady = true; // there is
data at EOF</span>
} else {
// next token must be a simple token
// add removed blanks when not ignoring whitespace chars...
-<span class="fc" id="L301"> parseSimpleToken(token, c);</span>
+<span class="fc" id="L292"> parseSimpleToken(token, c);</span>
}
}
-<span class="fc" id="L304"> return token;</span>
+<span class="fc" id="L295"> return token;</span>
+ }
+
+ private int nullToDisabled(final Character c) {
+<span class="fc bfc" id="L299" title="All 2 branches covered."> return
c == null ? Constants.UNDEFINED : c.charValue(); // Explicit unboxing</span>
}
/**
@@ -325,69 +320,60 @@ final class Lexer implements Closeable {
* @throws IOException
* Thrown when in an invalid state: EOF before closing
encapsulator or invalid character before
* delimiter or EOL.
+ * @throws CSVException Thrown on invalid input.
*/
private Token parseEncapsulatedToken(final Token token) throws IOException
{
-<span class="fc" id="L330"> token.isQuoted = true;</span>
+<span class="fc" id="L326"> token.isQuoted = true;</span>
// Save current line number in case needed for IOE
-<span class="fc" id="L332"> final long startLineNumber =
getCurrentLineNumber();</span>
+<span class="fc" id="L328"> final long startLineNumber =
getCurrentLineNumber();</span>
int c;
while (true) {
-<span class="fc" id="L335"> c = reader.read();</span>
+<span class="fc" id="L331"> c = reader.read();</span>
-<span class="fc bfc" id="L337" title="All 2 branches covered."> if
(isQuoteChar(c)) {</span>
-<span class="fc bfc" id="L338" title="All 2 branches covered.">
if (isQuoteChar(reader.lookAhead())) {</span>
+<span class="fc bfc" id="L333" title="All 2 branches covered."> if
(isQuoteChar(c)) {</span>
+<span class="fc bfc" id="L334" title="All 2 branches covered.">
if (isQuoteChar(reader.peek())) {</span>
// double or escaped encapsulator -> add single
encapsulator to token
-<span class="fc" id="L340"> c = reader.read();</span>
-<span class="fc" id="L341"> token.content.append((char)
c);</span>
+<span class="fc" id="L336"> c = reader.read();</span>
+<span class="fc" id="L337"> token.content.append((char)
c);</span>
} else {
// token finish mark (encapsulator) reached: ignore
whitespace till delimiter
while (true) {
-<span class="fc" id="L345"> c = reader.read();</span>
-<span class="fc bfc" id="L346" title="All 2 branches covered.">
if (isDelimiter(c)) {</span>
-<span class="fc" id="L347"> token.type =
TOKEN;</span>
-<span class="fc" id="L348"> return token;</span>
+<span class="fc" id="L341"> c = reader.read();</span>
+<span class="fc bfc" id="L342" title="All 2 branches covered.">
if (isDelimiter(c)) {</span>
+<span class="fc" id="L343"> token.type =
Token.Type.TOKEN;</span>
+<span class="fc" id="L344"> return token;</span>
}
-<span class="fc bfc" id="L350" title="All 2 branches covered.">
if (isEndOfFile(c)) {</span>
-<span class="fc" id="L351"> token.type =
Token.Type.EOF;</span>
-<span class="fc" id="L352"> token.isReady = true;
// There is data at EOF</span>
-<span class="fc" id="L353"> return token;</span>
+<span class="fc bfc" id="L346" title="All 2 branches covered.">
if (isEndOfFile(c)) {</span>
+<span class="fc" id="L347"> token.type =
Token.Type.EOF;</span>
+<span class="fc" id="L348"> token.isReady = true;
// There is data at EOF</span>
+<span class="fc" id="L349"> return token;</span>
}
-<span class="fc bfc" id="L355" title="All 2 branches covered.">
if (readEndOfLine(c)) {</span>
-<span class="fc" id="L356"> token.type =
EORECORD;</span>
-<span class="fc" id="L357"> return token;</span>
+<span class="fc bfc" id="L351" title="All 2 branches covered.">
if (readEndOfLine(c)) {</span>
+<span class="fc" id="L352"> token.type =
Token.Type.EORECORD;</span>
+<span class="fc" id="L353"> return token;</span>
}
-<span class="fc bfc" id="L359" title="All 2 branches covered.">
if (trailingData) {</span>
-<span class="fc" id="L360">
token.content.append((char) c);</span>
-<span class="fc bfc" id="L361" title="All 2 branches covered.">
} else if (!Character.isWhitespace((char) c)) {</span>
+<span class="fc bfc" id="L355" title="All 2 branches covered.">
if (trailingData) {</span>
+<span class="fc" id="L356">
token.content.append((char) c);</span>
+<span class="fc bfc" id="L357" title="All 2 branches covered.">
} else if (!Character.isWhitespace((char) c)) {</span>
// error invalid char between token and next
delimiter
-<span class="fc" id="L363"> throw new
IOException(String.format("Invalid char between encapsulated token and
delimiter at line: %,d, position: %,d",</span>
-<span class="fc" id="L364">
getCurrentLineNumber(), getCharacterPosition()));</span>
+<span class="fc" id="L359"> throw new
CSVException("Invalid character between encapsulated token and delimiter
at line: %,d, position: %,d",</span>
+<span class="fc" id="L360">
getCurrentLineNumber(), getCharacterPosition());</span>
}
}
}
-<span class="fc bfc" id="L368" title="All 2 branches covered."> }
else if (isEscape(c)) {</span>
-<span class="fc bfc" id="L369" title="All 2 branches covered.">
if (isEscapeDelimiter()) {</span>
-<span class="fc" id="L370">
token.content.append(delimiter);</span>
- } else {
-<span class="fc" id="L372"> final int unescaped =
readEscape();</span>
-<span class="fc bfc" id="L373" title="All 2 branches covered.">
if (unescaped == EOF) { // unexpected char after escape</span>
-<span class="fc" id="L374"> token.content.append((char)
c).append((char) reader.getLastChar());</span>
- } else {
-<span class="fc" id="L376"> token.content.append((char)
unescaped);</span>
- }
-<span class="fc" id="L378"> }</span>
-<span class="fc bfc" id="L379" title="All 2 branches covered."> }
else if (isEndOfFile(c)) {</span>
-<span class="fc bfc" id="L380" title="All 2 branches covered.">
if (lenientEof) {</span>
-<span class="fc" id="L381"> token.type =
Token.Type.EOF;</span>
-<span class="fc" id="L382"> token.isReady = true; // There
is data at EOF</span>
-<span class="fc" id="L383"> return token;</span>
+<span class="fc bfc" id="L364" title="All 2 branches covered."> }
else if (isEscape(c)) {</span>
+<span class="fc" id="L365">
appendNextEscapedCharacterToToken(token);</span>
+<span class="fc bfc" id="L366" title="All 2 branches covered."> }
else if (isEndOfFile(c)) {</span>
+<span class="fc bfc" id="L367" title="All 2 branches covered.">
if (lenientEof) {</span>
+<span class="fc" id="L368"> token.type =
Token.Type.EOF;</span>
+<span class="fc" id="L369"> token.isReady = true; // There
is data at EOF</span>
+<span class="fc" id="L370"> return token;</span>
}
// error condition (end of file before end of token)
-<span class="fc" id="L386"> throw new
IOException("(startline " + startLineNumber +</span>
- ") EOF reached before encapsulated token
finished");
+<span class="fc" id="L373"> throw new
CSVException("(startline %,d) EOF reached before encapsulated token
finished", startLineNumber);</span>
} else {
// consume character
-<span class="fc" id="L390"> token.content.append((char)
c);</span>
+<span class="fc" id="L376"> token.content.append((char)
c);</span>
}
}
}
@@ -395,8 +381,8 @@ final class Lexer implements Closeable {
/**
* Parses a simple token.
* <p>
- * Simple tokens are tokens that are not surrounded by encapsulators. A
simple token might contain escaped
- * delimiters (as \, or \;). The token is finished when one of the
following conditions becomes true:
+ * Simple tokens are tokens that are not surrounded by encapsulators. A
simple token might contain escaped delimiters (as \, or \;). The token is
finished
+ * when one of the following conditions becomes true:
* </p>
* <ul>
* <li>The end of line has been reached (EORECORD)</li>
@@ -404,53 +390,42 @@ final class Lexer implements Closeable {
* <li>An unescaped delimiter has been reached (TOKEN)</li>
* </ul>
*
- * @param token
- * the current token
- * @param ch
- * the current character
+ * @param token the current token
+ * @param ch the current character
* @return the filled token
- * @throws IOException
- * on stream access error
+ * @throws IOException on stream access error
+ * @throws CSVException Thrown on invalid input.
*/
private Token parseSimpleToken(final Token token, int ch) throws
IOException {
// Faster to use while(true)+break than while(token.type == INVALID)
while (true) {
-<span class="fc bfc" id="L418" title="All 2 branches covered."> if
(readEndOfLine(ch)) {</span>
-<span class="fc" id="L419"> token.type = EORECORD;</span>
-<span class="fc" id="L420"> break;</span>
- }
-<span class="fc bfc" id="L422" title="All 2 branches covered."> if
(isEndOfFile(ch)) {</span>
-<span class="fc" id="L423"> token.type = Token.Type.EOF;</span>
-<span class="fc" id="L424"> token.isReady = true; // There is
data at EOF</span>
-<span class="fc" id="L425"> break;</span>
- }
-<span class="fc bfc" id="L427" title="All 2 branches covered."> if
(isDelimiter(ch)) {</span>
-<span class="fc" id="L428"> token.type = TOKEN;</span>
-<span class="fc" id="L429"> break;</span>
+<span class="fc bfc" id="L402" title="All 2 branches covered."> if
(readEndOfLine(ch)) {</span>
+<span class="fc" id="L403"> token.type =
Token.Type.EORECORD;</span>
+<span class="fc" id="L404"> break;</span>
+ }
+<span class="fc bfc" id="L406" title="All 2 branches covered."> if
(isEndOfFile(ch)) {</span>
+<span class="fc" id="L407"> token.type = Token.Type.EOF;</span>
+<span class="fc" id="L408"> token.isReady = true; // There is
data at EOF</span>
+<span class="fc" id="L409"> break;</span>
+ }
+<span class="fc bfc" id="L411" title="All 2 branches covered."> if
(isDelimiter(ch)) {</span>
+<span class="fc" id="L412"> token.type =
Token.Type.TOKEN;</span>
+<span class="fc" id="L413"> break;</span>
}
// continue
-<span class="fc bfc" id="L432" title="All 2 branches covered."> if
(isEscape(ch)) {</span>
-<span class="fc bfc" id="L433" title="All 2 branches covered.">
if (isEscapeDelimiter()) {</span>
-<span class="fc" id="L434">
token.content.append(delimiter);</span>
- } else {
-<span class="fc" id="L436"> final int unescaped =
readEscape();</span>
-<span class="fc bfc" id="L437" title="All 2 branches covered.">
if (unescaped == EOF) { // unexpected char after escape</span>
-<span class="fc" id="L438"> token.content.append((char)
ch).append((char) reader.getLastChar());</span>
- } else {
-<span class="fc" id="L440"> token.content.append((char)
unescaped);</span>
- }
-<span class="fc" id="L442"> }</span>
+<span class="fc bfc" id="L416" title="All 2 branches covered."> if
(isEscape(ch)) {</span>
+<span class="fc" id="L417">
appendNextEscapedCharacterToToken(token);</span>
} else {
-<span class="fc" id="L444"> token.content.append((char)
ch);</span>
+<span class="fc" id="L419"> token.content.append((char)
ch);</span>
}
-<span class="fc" id="L446"> ch = reader.read(); // continue</span>
+<span class="fc" id="L421"> ch = reader.read(); // continue</span>
}
-<span class="fc bfc" id="L449" title="All 2 branches covered."> if
(ignoreSurroundingSpaces) {</span>
-<span class="fc" id="L450">
trimTrailingSpaces(token.content);</span>
+<span class="fc bfc" id="L424" title="All 2 branches covered."> if
(ignoreSurroundingSpaces) {</span>
+<span class="fc" id="L425">
trimTrailingSpaces(token.content);</span>
}
-<span class="fc" id="L453"> return token;</span>
+<span class="fc" id="L428"> return token;</span>
}
/**
@@ -460,78 +435,75 @@ final class Lexer implements Closeable {
*/
boolean readEndOfLine(int ch) throws IOException {
// check if we have \r\n...
-<span class="fc bfc" id="L463" title="All 4 branches covered."> if (ch
== CR && reader.lookAhead() == LF) {</span>
+<span class="fc bfc" id="L438" title="All 4 branches covered."> if (ch
== Constants.CR && reader.peek() == Constants.LF) {</span>
// note: does not change ch outside of this method!
-<span class="fc" id="L465"> ch = reader.read();</span>
+<span class="fc" id="L440"> ch = reader.read();</span>
// Save the EOL state
-<span class="fc bfc" id="L467" title="All 2 branches covered."> if
(firstEol == null) {</span>
-<span class="fc" id="L468"> this.firstEol =
Constants.CRLF;</span>
+<span class="fc bfc" id="L442" title="All 2 branches covered."> if
(firstEol == null) {</span>
+<span class="fc" id="L443"> this.firstEol =
Constants.CRLF;</span>
}
}
// save EOL state here.
-<span class="fc bfc" id="L472" title="All 2 branches covered."> if
(firstEol == null) {</span>
-<span class="fc bfc" id="L473" title="All 2 branches covered."> if
(ch == LF) {</span>
-<span class="fc" id="L474"> this.firstEol = LF_STRING;</span>
-<span class="fc bfc" id="L475" title="All 2 branches covered."> }
else if (ch == CR) {</span>
-<span class="fc" id="L476"> this.firstEol = CR_STRING;</span>
+<span class="fc bfc" id="L447" title="All 2 branches covered."> if
(firstEol == null) {</span>
+<span class="fc bfc" id="L448" title="All 2 branches covered."> if
(ch == Constants.LF) {</span>
+<span class="fc" id="L449"> this.firstEol = LF_STRING;</span>
+<span class="fc bfc" id="L450" title="All 2 branches covered."> }
else if (ch == Constants.CR) {</span>
+<span class="fc" id="L451"> this.firstEol = CR_STRING;</span>
}
}
-<span class="fc bfc" id="L480" title="All 4 branches covered."> return
ch == LF || ch == CR;</span>
+<span class="fc bfc" id="L455" title="All 4 branches covered."> return
ch == Constants.LF || ch == Constants.CR;</span>
}
// TODO escape handling needs more work
/**
- * Handle an escape sequence.
- * The current character must be the escape character.
- * On return, the next character is available by calling {@link
ExtendedBufferedReader#getLastChar()}
- * on the input stream.
- *
- * @return the unescaped character (as an int) or {@link Constants#EOF} if
char following the escape is
- * invalid.
- * @throws IOException if there is a problem reading the stream or the end
of stream is detected:
- * the escape character is not allowed at end of stream
+ * Handle an escape sequence. The current character must be the escape
character. On return, the next character is available by calling
+ * {@link ExtendedBufferedReader#getLastChar()} on the input stream.
+ *
+ * @return the unescaped character (as an int) or {@link IOUtils#EOF} if
char following the escape is invalid.
+ * @throws IOException if there is a problem reading the stream or the
end of stream is detected: the escape character is not allowed at end of stream
+ * @throws CSVException Thrown on invalid input.
*/
int readEscape() throws IOException {
// the escape char has just been read (normally a backslash)
-<span class="fc" id="L497"> final int ch = reader.read();</span>
-<span class="fc bfc" id="L498" title="All 8 branches covered."> switch
(ch) {</span>
+<span class="fc" id="L469"> final int ch = reader.read();</span>
+<span class="fc bfc" id="L470" title="All 8 branches covered."> switch
(ch) {</span>
case 'r':
-<span class="fc" id="L500"> return CR;</span>
+<span class="fc" id="L472"> return Constants.CR;</span>
case 'n':
-<span class="fc" id="L502"> return LF;</span>
+<span class="fc" id="L474"> return Constants.LF;</span>
case 't':
-<span class="fc" id="L504"> return TAB;</span>
+<span class="fc" id="L476"> return Constants.TAB;</span>
case 'b':
-<span class="fc" id="L506"> return BACKSPACE;</span>
+<span class="fc" id="L478"> return Constants.BACKSPACE;</span>
case 'f':
-<span class="fc" id="L508"> return FF;</span>
- case CR:
- case LF:
- case FF: // TODO is this correct?
- case TAB: // TODO is this correct? Do tabs need to be escaped?
- case BACKSPACE: // TODO is this correct?
-<span class="fc" id="L514"> return ch;</span>
+<span class="fc" id="L480"> return Constants.FF;</span>
+ case Constants.CR:
+ case Constants.LF:
+ case Constants.FF: // TODO is this correct?
+ case Constants.TAB: // TODO is this correct? Do tabs need to be
escaped?
+ case Constants.BACKSPACE: // TODO is this correct?
+<span class="fc" id="L486"> return ch;</span>
case EOF:
-<span class="fc" id="L516"> throw new IOException("EOF whilst
processing escape sequence");</span>
+<span class="fc" id="L488"> throw new CSVException("EOF while
processing escape sequence");</span>
default:
// Now check for meta-characters
-<span class="fc bfc" id="L519" title="All 2 branches covered."> if
(isMetaChar(ch)) {</span>
-<span class="fc" id="L520"> return ch;</span>
+<span class="fc bfc" id="L491" title="All 2 branches covered."> if
(isMetaChar(ch)) {</span>
+<span class="fc" id="L492"> return ch;</span>
}
// indicate unexpected char - available from in.getLastChar()
-<span class="fc" id="L523"> return EOF;</span>
+<span class="fc" id="L495"> return EOF;</span>
}
}
void trimTrailingSpaces(final StringBuilder buffer) {
-<span class="fc" id="L528"> int length = buffer.length();</span>
-<span class="fc bfc" id="L529" title="All 4 branches covered."> while
(length > 0 && Character.isWhitespace(buffer.charAt(length - 1)))
{</span>
-<span class="fc" id="L530"> length--;</span>
+<span class="fc" id="L500"> int length = buffer.length();</span>
+<span class="fc bfc" id="L501" title="All 4 branches covered."> while
(length > 0 && Character.isWhitespace(buffer.charAt(length - 1)))
{</span>
+<span class="fc" id="L502"> length--;</span>
}
-<span class="fc bfc" id="L532" title="All 2 branches covered."> if
(length != buffer.length()) {</span>
-<span class="fc" id="L533"> buffer.setLength(length);</span>
+<span class="fc bfc" id="L504" title="All 2 branches covered."> if
(length != buffer.length()) {</span>
+<span class="fc" id="L505"> buffer.setLength(length);</span>
}
-<span class="fc" id="L535"> }</span>
+<span class="fc" id="L507"> }</span>
}
-</pre><div class="footer"><span class="right">Created with <a
href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.11.202310140853</span></div></body></html>
\ No newline at end of file
+</pre><div class="footer"><span class="right">Created with <a
href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.12.202403310830</span></div></body></html>
\ No newline at end of file
Modified:
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/QuoteMode.html
==============================================================================
---
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/QuoteMode.html
(original)
+++
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/QuoteMode.html
Wed Sep 25 02:11:29 2024
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html
xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link
rel="shortcut icon" href="../jacoco-resources/report.gif"
type="image/gif"/><title>QuoteMode</title><script type="text/javascript"
src="../jacoco-resources/sort.js"></script></head><body
onload="initialSort(['breadcrumb'])"><div class="breadcrumb"
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html"
class="el_session">Sessions</a></span><a href="../index.html"
class="el_report">Apache Commons CSV</a> > <a href="index.html"
class="el_package">org.apache.commons.csv</a> > <span
class="el_class">QuoteMode</span></div><h1>QuoteMode</h1><table
class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class=
"sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down
sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td
class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td
class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td
class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td
class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td
class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td
class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="k"
onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td
class="bar">0 of 33</td><td class="ctr2">100%</td><td class="bar">0 of
0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td
class="ctr2">1</td><td class="ctr1">0</t
d><td class="ctr2">6</td><td class="ctr1">0</td><td
class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a
href="QuoteMode.java.html#L22" class="el_method">static {...}</a></td><td
class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120"
height="10" title="33" alt="33"/></td><td class="ctr2" id="c0">100%</td><td
class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1"
id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td
class="ctr2" id="i0">6</td><td class="ctr1" id="j0">0</td><td class="ctr2"
id="k0">1</td></tr></tbody></table><div class="footer"><span
class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.11.202310140853</span></div></body></html>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html
xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link
rel="shortcut icon" href="../jacoco-resources/report.gif"
type="image/gif"/><title>QuoteMode</title><script type="text/javascript"
src="../jacoco-resources/sort.js"></script></head><body
onload="initialSort(['breadcrumb'])"><div class="breadcrumb"
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html"
class="el_session">Sessions</a></span><a href="../index.html"
class="el_report">Apache Commons CSV</a> > <a href="index.html"
class="el_package">org.apache.commons.csv</a> > <span
class="el_class">QuoteMode</span></div><h1>QuoteMode</h1><table
class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class=
"sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down
sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td
class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td
class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td
class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td
class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td
class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td
class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="k"
onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td
class="bar">0 of 33</td><td class="ctr2">100%</td><td class="bar">0 of
0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td
class="ctr2">1</td><td class="ctr1">0</t
d><td class="ctr2">6</td><td class="ctr1">0</td><td
class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a
href="QuoteMode.java.html#L22" class="el_method">static {...}</a></td><td
class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120"
height="10" title="33" alt="33"/></td><td class="ctr2" id="c0">100%</td><td
class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1"
id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td
class="ctr2" id="i0">6</td><td class="ctr1" id="j0">0</td><td class="ctr2"
id="k0">1</td></tr></tbody></table><div class="footer"><span
class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.12.202403310830</span></div></body></html>
\ No newline at end of file
Modified:
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/QuoteMode.java.html
==============================================================================
---
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/QuoteMode.java.html
(original)
+++
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/QuoteMode.java.html
Wed Sep 25 02:11:29 2024
@@ -48,4 +48,4 @@ package org.apache.commons.csv;
*/
<span class="fc" id="L49"> NONE</span>
}
-</pre><div class="footer"><span class="right">Created with <a
href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.11.202310140853</span></div></body></html>
\ No newline at end of file
+</pre><div class="footer"><span class="right">Created with <a
href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.12.202403310830</span></div></body></html>
\ No newline at end of file
Modified:
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Token$Type.html
==============================================================================
---
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Token$Type.html
(original)
+++
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Token$Type.html
Wed Sep 25 02:11:29 2024
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html
xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link
rel="shortcut icon" href="../jacoco-resources/report.gif"
type="image/gif"/><title>Token.Type</title><script type="text/javascript"
src="../jacoco-resources/sort.js"></script></head><body
onload="initialSort(['breadcrumb'])"><div class="breadcrumb"
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html"
class="el_session">Sessions</a></span><a href="../index.html"
class="el_report">Apache Commons CSV</a> > <a href="index.html"
class="el_package">org.apache.commons.csv</a> > <span
class="el_class">Token.Type</span></div><h1>Token.Type</h1><table
class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td cla
ss="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down
sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td
class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td
class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td
class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td
class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td
class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td
class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="k"
onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td
class="bar">0 of 33</td><td class="ctr2">100%</td><td class="bar">0 of
0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td
class="ctr2">1</td><td class="ctr1">0
</td><td class="ctr2">6</td><td class="ctr1">0</td><td
class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a
href="Token.java.html#L30" class="el_method">static {...}</a></td><td
class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120"
height="10" title="33" alt="33"/></td><td class="ctr2" id="c0">100%</td><td
class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1"
id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td
class="ctr2" id="i0">6</td><td class="ctr1" id="j0">0</td><td class="ctr2"
id="k0">1</td></tr></tbody></table><div class="footer"><span
class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.11.202310140853</span></div></body></html>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html
xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link
rel="shortcut icon" href="../jacoco-resources/report.gif"
type="image/gif"/><title>Token.Type</title><script type="text/javascript"
src="../jacoco-resources/sort.js"></script></head><body
onload="initialSort(['breadcrumb'])"><div class="breadcrumb"
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html"
class="el_session">Sessions</a></span><a href="../index.html"
class="el_report">Apache Commons CSV</a> > <a href="index.html"
class="el_package">org.apache.commons.csv</a> > <span
class="el_class">Token.Type</span></div><h1>Token.Type</h1><table
class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td cla
ss="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down
sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td
class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td
class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td
class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td
class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td
class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td
class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td
class="sortable ctr2" id="k"
onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td
class="bar">0 of 33</td><td class="ctr2">100%</td><td class="bar">0 of
0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td
class="ctr2">1</td><td class="ctr1">0
</td><td class="ctr2">6</td><td class="ctr1">0</td><td
class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a
href="Token.java.html#L30" class="el_method">static {...}</a></td><td
class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120"
height="10" title="33" alt="33"/></td><td class="ctr2" id="c0">100%</td><td
class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1"
id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td
class="ctr2" id="i0">6</td><td class="ctr1" id="j0">0</td><td class="ctr2"
id="k0">1</td></tr></tbody></table><div class="footer"><span
class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.12.202403310830</span></div></body></html>
\ No newline at end of file
Modified:
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Token.html
==============================================================================
---
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Token.html
(original)
+++
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Token.html
Wed Sep 25 02:11:29 2024
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html
xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link
rel="shortcut icon" href="../jacoco-resources/report.gif"
type="image/gif"/><title>Token</title><script type="text/javascript"
src="../jacoco-resources/sort.js"></script></head><body
onload="initialSort(['breadcrumb'])"><div class="breadcrumb"
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html"
class="el_session">Sessions</a></span><a href="../index.html"
class="el_report">Apache Commons CSV</a> > <a href="index.html"
class="el_package">org.apache.commons.csv</a> > <span
class="el_class">Token</span></div><h1>Token</h1><table class="coverage"
cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" i
d="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar"
id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable
ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar"
id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2"
id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f"
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g"
onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h"
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i"
onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j"
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k"
onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td
class="bar">0 of 43</td><td class="ctr2">100%</td><td class="bar">0 of
0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td
class="ctr2">3</td><td class="ctr1">0</td><td class=
"ctr2">9</td><td class="ctr1">0</td><td
class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a2"><a
href="Token.java.html#L75" class="el_method">toString()</a></td><td class="bar"
id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10"
title="17" alt="17"/></td><td class="ctr2" id="c0">100%</td><td class="bar"
id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">0</td><td
class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td class="ctr2"
id="i2">1</td><td class="ctr1" id="j0">0</td><td class="ctr2"
id="k0">1</td></tr><tr><td id="a0"><a href="Token.java.html#L62"
class="el_method">reset()</a></td><td class="bar" id="b1"><img
src="../jacoco-resources/greenbar.gif" width="98" height="10" title="14"
alt="14"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d1"/><td
class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">0</td><td class="ctr2"
id="g1">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i0">5</td><td
class="ctr1" id="
j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a1"><a
href="Token.java.html#L28" class="el_method">Token()</a></td><td class="bar"
id="b2"><img src="../jacoco-resources/greenbar.gif" width="84" height="10"
title="12" alt="12"/></td><td class="ctr2" id="c2">100%</td><td class="bar"
id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">0</td><td
class="ctr2" id="g2">1</td><td class="ctr1" id="h2">0</td><td class="ctr2"
id="i1">3</td><td class="ctr1" id="j2">0</td><td class="ctr2"
id="k2">1</td></tr></tbody></table><div class="footer"><span
class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.11.202310140853</span></div></body></html>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html
xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link
rel="shortcut icon" href="../jacoco-resources/report.gif"
type="image/gif"/><title>Token</title><script type="text/javascript"
src="../jacoco-resources/sort.js"></script></head><body
onload="initialSort(['breadcrumb'])"><div class="breadcrumb"
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html"
class="el_session">Sessions</a></span><a href="../index.html"
class="el_report">Apache Commons CSV</a> > <a href="index.html"
class="el_package">org.apache.commons.csv</a> > <span
class="el_class">Token</span></div><h1>Token</h1><table class="coverage"
cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" i
d="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar"
id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable
ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar"
id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2"
id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f"
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g"
onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h"
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i"
onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j"
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k"
onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td
class="bar">0 of 43</td><td class="ctr2">100%</td><td class="bar">0 of
0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td
class="ctr2">3</td><td class="ctr1">0</td><td class=
"ctr2">9</td><td class="ctr1">0</td><td
class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a2"><a
href="Token.java.html#L75" class="el_method">toString()</a></td><td class="bar"
id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10"
title="17" alt="17"/></td><td class="ctr2" id="c0">100%</td><td class="bar"
id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">0</td><td
class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td class="ctr2"
id="i2">1</td><td class="ctr1" id="j0">0</td><td class="ctr2"
id="k0">1</td></tr><tr><td id="a0"><a href="Token.java.html#L62"
class="el_method">reset()</a></td><td class="bar" id="b1"><img
src="../jacoco-resources/greenbar.gif" width="98" height="10" title="14"
alt="14"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d1"/><td
class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">0</td><td class="ctr2"
id="g1">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i0">5</td><td
class="ctr1" id="
j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a1"><a
href="Token.java.html#L28" class="el_method">Token()</a></td><td class="bar"
id="b2"><img src="../jacoco-resources/greenbar.gif" width="84" height="10"
title="12" alt="12"/></td><td class="ctr2" id="c2">100%</td><td class="bar"
id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">0</td><td
class="ctr2" id="g2">1</td><td class="ctr1" id="h2">0</td><td class="ctr2"
id="i1">3</td><td class="ctr1" id="j2">0</td><td class="ctr2"
id="k2">1</td></tr></tbody></table><div class="footer"><span
class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.12.202403310830</span></div></body></html>
\ No newline at end of file
Modified:
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Token.java.html
==============================================================================
---
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Token.java.html
(original)
+++
websites/production/commons/content/proper/commons-csv/jacoco/org.apache.commons.csv/Token.java.html
Wed Sep 25 02:11:29 2024
@@ -75,4 +75,4 @@ import static org.apache.commons.csv.Tok
<span class="fc" id="L75"> return type.name() + " [" +
content.toString() + "]";</span>
}
}
-</pre><div class="footer"><span class="right">Created with <a
href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.11.202310140853</span></div></body></html>
\ No newline at end of file
+</pre><div class="footer"><span class="right">Created with <a
href="http://www.jacoco.org/jacoco">JaCoCo</a>
0.8.12.202403310830</span></div></body></html>
\ No newline at end of file