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 &lt; 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 &lt; 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 &quot;[|]&quot; and escape '!', return true 
if the next characters constitute &quot;![!|!]&quot;.
      *
@@ -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 &lt; 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 &lt; 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.
      * &lt;/p&gt;
      *
-     * @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 &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; 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) &amp;&amp; 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) &amp;&amp; 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) &amp;&amp; !isDelimiter(c) &amp;&amp; 
!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) &amp;&amp; !isDelimiter(c) &amp;&amp; 
!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(&quot;&quot;)
-<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(&quot;&quot;)
                 // noop: token.content.append(&quot;&quot;);
-<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(&quot;&quot;);
-<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 -&gt; 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(&quot;Invalid char between encapsulated token and 
delimiter at line: %,d, position: %,d&quot;,</span>
-<span class="fc" id="L364">                                    
getCurrentLineNumber(), getCharacterPosition()));</span>
+<span class="fc" id="L359">                            throw new 
CSVException(&quot;Invalid character between encapsulated token and delimiter 
at line: %,d, position: %,d&quot;,</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(&quot;(startline &quot; + startLineNumber +</span>
-                        &quot;) EOF reached before encapsulated token 
finished&quot;);
+<span class="fc" id="L373">                throw new 
CSVException(&quot;(startline %,d) EOF reached before encapsulated token 
finished&quot;, 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.
      * &lt;p&gt;
-     * 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:
      * &lt;/p&gt;
      * &lt;ul&gt;
      * &lt;li&gt;The end of line has been reached (EORECORD)&lt;/li&gt;
@@ -404,53 +390,42 @@ final class Lexer implements Closeable {
      * &lt;li&gt;An unescaped delimiter has been reached (TOKEN)&lt;/li&gt;
      * &lt;/ul&gt;
      *
-     * @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 &amp;&amp; reader.lookAhead() == LF) {</span>
+<span class="fc bfc" id="L438" title="All 4 branches covered.">        if (ch 
== Constants.CR &amp;&amp; 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(&quot;EOF whilst 
processing escape sequence&quot;);</span>
+<span class="fc" id="L488">            throw new CSVException(&quot;EOF while 
processing escape sequence&quot;);</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 &gt; 0 &amp;&amp; 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 &gt; 0 &amp;&amp; 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> &gt; <a href="index.html" 
class="el_package">org.apache.commons.csv</a> &gt; <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> &gt; <a href="index.html" 
class="el_package">org.apache.commons.csv</a> &gt; <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> &gt; <a href="index.html" 
class="el_package">org.apache.commons.csv</a> &gt; <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> &gt; <a href="index.html" 
class="el_package">org.apache.commons.csv</a> &gt; <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> &gt; <a href="index.html" 
class="el_package">org.apache.commons.csv</a> &gt; <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> &gt; <a href="index.html" 
class="el_package">org.apache.commons.csv</a> &gt; <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() + &quot; [&quot; + 
content.toString() + &quot;]&quot;;</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


Reply via email to