Modified: websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/Lexer.html ============================================================================== --- websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/Lexer.html (original) +++ websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/Lexer.html Sat Jan 11 14:23:31 2025 @@ -1,5 +1,5 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang=""> <head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Lexer xref</title> <link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" /> @@ -410,121 +410,123 @@ <a class="jxr_linenumber" name="L402" href="#L402">402</a> <em class="jxr_javadoccomment"> * </ul></em> <a class="jxr_linenumber" name="L403" href="#L403">403</a> <em class="jxr_javadoccomment"> *</em> <a class="jxr_linenumber" name="L404" href="#L404">404</a> <em class="jxr_javadoccomment"> * @param token the current token</em> -<a class="jxr_linenumber" name="L405" href="#L405">405</a> <em class="jxr_javadoccomment"> * @param ch the current character</em> +<a class="jxr_linenumber" name="L405" href="#L405">405</a> <em class="jxr_javadoccomment"> * @param ch the current character</em> <a class="jxr_linenumber" name="L406" href="#L406">406</a> <em class="jxr_javadoccomment"> * @return the filled token</em> <a class="jxr_linenumber" name="L407" href="#L407">407</a> <em class="jxr_javadoccomment"> * @throws IOException on stream access error</em> <a class="jxr_linenumber" name="L408" href="#L408">408</a> <em class="jxr_javadoccomment"> * @throws CSVException Thrown on invalid input.</em> <a class="jxr_linenumber" name="L409" href="#L409">409</a> <em class="jxr_javadoccomment"> */</em> -<a class="jxr_linenumber" name="L410" href="#L410">410</a> <strong class="jxr_keyword">private</strong> <a name="Token" href="../../../../org/apache/commons/csv/Token.html#Token">Token</a> parseSimpleToken(<strong class="jxr_keyword">final</strong> <a name="Token" href="../../../../org/apache/commons/csv/Token.html#Token">Token</a> token, <strong class="jxr_keyword">int</strong> ch) <strong class="jxr_keyword">throws</strong> IOException { +<a class="jxr_linenumber" name="L410" href="#L410">410</a> <strong class="jxr_keyword">private</strong> <a name="Token" href="../../../../org/apache/commons/csv/Token.html#Token">Token</a> parseSimpleToken(<strong class="jxr_keyword">final</strong> <a name="Token" href="../../../../org/apache/commons/csv/Token.html#Token">Token</a> token, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ch) <strong class="jxr_keyword">throws</strong> IOException { <a class="jxr_linenumber" name="L411" href="#L411">411</a> <em class="jxr_comment">// Faster to use while(true)+break than while(token.type == INVALID)</em> -<a class="jxr_linenumber" name="L412" href="#L412">412</a> <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) { -<a class="jxr_linenumber" name="L413" href="#L413">413</a> <strong class="jxr_keyword">if</strong> (readEndOfLine(ch)) { -<a class="jxr_linenumber" name="L414" href="#L414">414</a> token.type = Token.Type.EORECORD; -<a class="jxr_linenumber" name="L415" href="#L415">415</a> <strong class="jxr_keyword">break</strong>; -<a class="jxr_linenumber" name="L416" href="#L416">416</a> } -<a class="jxr_linenumber" name="L417" href="#L417">417</a> <strong class="jxr_keyword">if</strong> (isEndOfFile(ch)) { -<a class="jxr_linenumber" name="L418" href="#L418">418</a> token.type = Token.Type.EOF; -<a class="jxr_linenumber" name="L419" href="#L419">419</a> token.isReady = <strong class="jxr_keyword">true</strong>; <em class="jxr_comment">// There is data at EOF</em> -<a class="jxr_linenumber" name="L420" href="#L420">420</a> <strong class="jxr_keyword">break</strong>; -<a class="jxr_linenumber" name="L421" href="#L421">421</a> } -<a class="jxr_linenumber" name="L422" href="#L422">422</a> <strong class="jxr_keyword">if</strong> (isDelimiter(ch)) { -<a class="jxr_linenumber" name="L423" href="#L423">423</a> token.type = Token.Type.TOKEN; -<a class="jxr_linenumber" name="L424" href="#L424">424</a> <strong class="jxr_keyword">break</strong>; -<a class="jxr_linenumber" name="L425" href="#L425">425</a> } -<a class="jxr_linenumber" name="L426" href="#L426">426</a> <em class="jxr_comment">// continue</em> -<a class="jxr_linenumber" name="L427" href="#L427">427</a> <strong class="jxr_keyword">if</strong> (isEscape(ch)) { -<a class="jxr_linenumber" name="L428" href="#L428">428</a> appendNextEscapedCharacterToToken(token); -<a class="jxr_linenumber" name="L429" href="#L429">429</a> } <strong class="jxr_keyword">else</strong> { -<a class="jxr_linenumber" name="L430" href="#L430">430</a> token.content.append((<strong class="jxr_keyword">char</strong>) ch); -<a class="jxr_linenumber" name="L431" href="#L431">431</a> } -<a class="jxr_linenumber" name="L432" href="#L432">432</a> ch = reader.read(); <em class="jxr_comment">// continue</em> -<a class="jxr_linenumber" name="L433" href="#L433">433</a> } -<a class="jxr_linenumber" name="L434" href="#L434">434</a> -<a class="jxr_linenumber" name="L435" href="#L435">435</a> <strong class="jxr_keyword">if</strong> (ignoreSurroundingSpaces) { -<a class="jxr_linenumber" name="L436" href="#L436">436</a> trimTrailingSpaces(token.content); -<a class="jxr_linenumber" name="L437" href="#L437">437</a> } -<a class="jxr_linenumber" name="L438" href="#L438">438</a> -<a class="jxr_linenumber" name="L439" href="#L439">439</a> <strong class="jxr_keyword">return</strong> token; -<a class="jxr_linenumber" name="L440" href="#L440">440</a> } -<a class="jxr_linenumber" name="L441" href="#L441">441</a> -<a class="jxr_linenumber" name="L442" href="#L442">442</a> <em class="jxr_javadoccomment">/**</em> -<a class="jxr_linenumber" name="L443" href="#L443">443</a> <em class="jxr_javadoccomment"> * Greedily accepts \n, \r and \r\n This checker consumes silently the second control-character...</em> -<a class="jxr_linenumber" name="L444" href="#L444">444</a> <em class="jxr_javadoccomment"> *</em> -<a class="jxr_linenumber" name="L445" href="#L445">445</a> <em class="jxr_javadoccomment"> * @return true if the given or next character is a line-terminator</em> -<a class="jxr_linenumber" name="L446" href="#L446">446</a> <em class="jxr_javadoccomment"> */</em> -<a class="jxr_linenumber" name="L447" href="#L447">447</a> <strong class="jxr_keyword">boolean</strong> readEndOfLine(<strong class="jxr_keyword">int</strong> ch) <strong class="jxr_keyword">throws</strong> IOException { -<a class="jxr_linenumber" name="L448" href="#L448">448</a> <em class="jxr_comment">// check if we have \r\n...</em> -<a class="jxr_linenumber" name="L449" href="#L449">449</a> <strong class="jxr_keyword">if</strong> (ch == Constants.CR && reader.peek() == Constants.LF) { -<a class="jxr_linenumber" name="L450" href="#L450">450</a> <em class="jxr_comment">// note: does not change ch outside of this method!</em> -<a class="jxr_linenumber" name="L451" href="#L451">451</a> ch = reader.read(); -<a class="jxr_linenumber" name="L452" href="#L452">452</a> <em class="jxr_comment">// Save the EOL state</em> -<a class="jxr_linenumber" name="L453" href="#L453">453</a> <strong class="jxr_keyword">if</strong> (firstEol == <strong class="jxr_keyword">null</strong>) { -<a class="jxr_linenumber" name="L454" href="#L454">454</a> <strong class="jxr_keyword">this</strong>.firstEol = Constants.CRLF; -<a class="jxr_linenumber" name="L455" href="#L455">455</a> } -<a class="jxr_linenumber" name="L456" href="#L456">456</a> } -<a class="jxr_linenumber" name="L457" href="#L457">457</a> <em class="jxr_comment">// save EOL state here.</em> -<a class="jxr_linenumber" name="L458" href="#L458">458</a> <strong class="jxr_keyword">if</strong> (firstEol == <strong class="jxr_keyword">null</strong>) { -<a class="jxr_linenumber" name="L459" href="#L459">459</a> <strong class="jxr_keyword">if</strong> (ch == Constants.LF) { -<a class="jxr_linenumber" name="L460" href="#L460">460</a> <strong class="jxr_keyword">this</strong>.firstEol = LF_STRING; -<a class="jxr_linenumber" name="L461" href="#L461">461</a> } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ch == Constants.CR) { -<a class="jxr_linenumber" name="L462" href="#L462">462</a> <strong class="jxr_keyword">this</strong>.firstEol = CR_STRING; -<a class="jxr_linenumber" name="L463" href="#L463">463</a> } -<a class="jxr_linenumber" name="L464" href="#L464">464</a> } -<a class="jxr_linenumber" name="L465" href="#L465">465</a> -<a class="jxr_linenumber" name="L466" href="#L466">466</a> <strong class="jxr_keyword">return</strong> ch == Constants.LF || ch == Constants.CR; -<a class="jxr_linenumber" name="L467" href="#L467">467</a> } -<a class="jxr_linenumber" name="L468" href="#L468">468</a> -<a class="jxr_linenumber" name="L469" href="#L469">469</a> <em class="jxr_comment">// TODO escape handling needs more work</em> -<a class="jxr_linenumber" name="L470" href="#L470">470</a> <em class="jxr_javadoccomment">/**</em> -<a class="jxr_linenumber" name="L471" href="#L471">471</a> <em class="jxr_javadoccomment"> * Handle an escape sequence. The current character must be the escape character. On return, the next character is available by calling</em> -<a class="jxr_linenumber" name="L472" href="#L472">472</a> <em class="jxr_javadoccomment"> * {@link ExtendedBufferedReader#getLastChar()} on the input stream.</em> -<a class="jxr_linenumber" name="L473" href="#L473">473</a> <em class="jxr_javadoccomment"> *</em> -<a class="jxr_linenumber" name="L474" href="#L474">474</a> <em class="jxr_javadoccomment"> * @return the unescaped character (as an int) or {@link IOUtils#EOF} if char following the escape is invalid.</em> -<a class="jxr_linenumber" name="L475" href="#L475">475</a> <em class="jxr_javadoccomment"> * @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</em> -<a class="jxr_linenumber" name="L476" href="#L476">476</a> <em class="jxr_javadoccomment"> * @throws CSVException Thrown on invalid input.</em> -<a class="jxr_linenumber" name="L477" href="#L477">477</a> <em class="jxr_javadoccomment"> */</em> -<a class="jxr_linenumber" name="L478" href="#L478">478</a> <strong class="jxr_keyword">int</strong> readEscape() <strong class="jxr_keyword">throws</strong> IOException { -<a class="jxr_linenumber" name="L479" href="#L479">479</a> <em class="jxr_comment">// the escape char has just been read (normally a backslash)</em> -<a class="jxr_linenumber" name="L480" href="#L480">480</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ch = reader.read(); -<a class="jxr_linenumber" name="L481" href="#L481">481</a> <strong class="jxr_keyword">switch</strong> (ch) { -<a class="jxr_linenumber" name="L482" href="#L482">482</a> <strong class="jxr_keyword">case</strong> 'r': -<a class="jxr_linenumber" name="L483" href="#L483">483</a> <strong class="jxr_keyword">return</strong> Constants.CR; -<a class="jxr_linenumber" name="L484" href="#L484">484</a> <strong class="jxr_keyword">case</strong> 'n': -<a class="jxr_linenumber" name="L485" href="#L485">485</a> <strong class="jxr_keyword">return</strong> Constants.LF; -<a class="jxr_linenumber" name="L486" href="#L486">486</a> <strong class="jxr_keyword">case</strong> 't': -<a class="jxr_linenumber" name="L487" href="#L487">487</a> <strong class="jxr_keyword">return</strong> Constants.TAB; -<a class="jxr_linenumber" name="L488" href="#L488">488</a> <strong class="jxr_keyword">case</strong> 'b': -<a class="jxr_linenumber" name="L489" href="#L489">489</a> <strong class="jxr_keyword">return</strong> Constants.BACKSPACE; -<a class="jxr_linenumber" name="L490" href="#L490">490</a> <strong class="jxr_keyword">case</strong> 'f': -<a class="jxr_linenumber" name="L491" href="#L491">491</a> <strong class="jxr_keyword">return</strong> Constants.FF; -<a class="jxr_linenumber" name="L492" href="#L492">492</a> <strong class="jxr_keyword">case</strong> Constants.CR: -<a class="jxr_linenumber" name="L493" href="#L493">493</a> <strong class="jxr_keyword">case</strong> Constants.LF: -<a class="jxr_linenumber" name="L494" href="#L494">494</a> <strong class="jxr_keyword">case</strong> Constants.FF: <em class="jxr_comment">// TODO is this correct?</em> -<a class="jxr_linenumber" name="L495" href="#L495">495</a> <strong class="jxr_keyword">case</strong> Constants.TAB: <em class="jxr_comment">// TODO is this correct? Do tabs need to be escaped?</em> -<a class="jxr_linenumber" name="L496" href="#L496">496</a> <strong class="jxr_keyword">case</strong> Constants.BACKSPACE: <em class="jxr_comment">// TODO is this correct?</em> -<a class="jxr_linenumber" name="L497" href="#L497">497</a> <strong class="jxr_keyword">return</strong> ch; -<a class="jxr_linenumber" name="L498" href="#L498">498</a> <strong class="jxr_keyword">case</strong> EOF: -<a class="jxr_linenumber" name="L499" href="#L499">499</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="CSVException" href="../../../../org/apache/commons/csv/CSVException.html#CSVException">CSVException</a>(<span class="jxr_string">"EOF while processing escape sequence"</span>); -<a class="jxr_linenumber" name="L500" href="#L500">500</a> <strong class="jxr_keyword">default</strong>: -<a class="jxr_linenumber" name="L501" href="#L501">501</a> <em class="jxr_comment">// Now check for meta-characters</em> -<a class="jxr_linenumber" name="L502" href="#L502">502</a> <strong class="jxr_keyword">if</strong> (isMetaChar(ch)) { -<a class="jxr_linenumber" name="L503" href="#L503">503</a> <strong class="jxr_keyword">return</strong> ch; -<a class="jxr_linenumber" name="L504" href="#L504">504</a> } -<a class="jxr_linenumber" name="L505" href="#L505">505</a> <em class="jxr_comment">// indicate unexpected char - available from in.getLastChar()</em> -<a class="jxr_linenumber" name="L506" href="#L506">506</a> <strong class="jxr_keyword">return</strong> EOF; -<a class="jxr_linenumber" name="L507" href="#L507">507</a> } -<a class="jxr_linenumber" name="L508" href="#L508">508</a> } -<a class="jxr_linenumber" name="L509" href="#L509">509</a> -<a class="jxr_linenumber" name="L510" href="#L510">510</a> <strong class="jxr_keyword">void</strong> trimTrailingSpaces(<strong class="jxr_keyword">final</strong> StringBuilder buffer) { -<a class="jxr_linenumber" name="L511" href="#L511">511</a> <strong class="jxr_keyword">int</strong> length = buffer.length(); -<a class="jxr_linenumber" name="L512" href="#L512">512</a> <strong class="jxr_keyword">while</strong> (length > 0 && Character.isWhitespace(buffer.charAt(length - 1))) { -<a class="jxr_linenumber" name="L513" href="#L513">513</a> length--; -<a class="jxr_linenumber" name="L514" href="#L514">514</a> } -<a class="jxr_linenumber" name="L515" href="#L515">515</a> <strong class="jxr_keyword">if</strong> (length != buffer.length()) { -<a class="jxr_linenumber" name="L516" href="#L516">516</a> buffer.setLength(length); -<a class="jxr_linenumber" name="L517" href="#L517">517</a> } -<a class="jxr_linenumber" name="L518" href="#L518">518</a> } -<a class="jxr_linenumber" name="L519" href="#L519">519</a> } +<a class="jxr_linenumber" name="L412" href="#L412">412</a> <strong class="jxr_keyword">int</strong> cur = ch; +<a class="jxr_linenumber" name="L413" href="#L413">413</a> <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) { +<a class="jxr_linenumber" name="L414" href="#L414">414</a> <strong class="jxr_keyword">if</strong> (readEndOfLine(cur)) { +<a class="jxr_linenumber" name="L415" href="#L415">415</a> token.type = Token.Type.EORECORD; +<a class="jxr_linenumber" name="L416" href="#L416">416</a> <strong class="jxr_keyword">break</strong>; +<a class="jxr_linenumber" name="L417" href="#L417">417</a> } +<a class="jxr_linenumber" name="L418" href="#L418">418</a> <strong class="jxr_keyword">if</strong> (isEndOfFile(cur)) { +<a class="jxr_linenumber" name="L419" href="#L419">419</a> token.type = Token.Type.EOF; +<a class="jxr_linenumber" name="L420" href="#L420">420</a> token.isReady = <strong class="jxr_keyword">true</strong>; <em class="jxr_comment">// There is data at EOF</em> +<a class="jxr_linenumber" name="L421" href="#L421">421</a> <strong class="jxr_keyword">break</strong>; +<a class="jxr_linenumber" name="L422" href="#L422">422</a> } +<a class="jxr_linenumber" name="L423" href="#L423">423</a> <strong class="jxr_keyword">if</strong> (isDelimiter(cur)) { +<a class="jxr_linenumber" name="L424" href="#L424">424</a> token.type = Token.Type.TOKEN; +<a class="jxr_linenumber" name="L425" href="#L425">425</a> <strong class="jxr_keyword">break</strong>; +<a class="jxr_linenumber" name="L426" href="#L426">426</a> } +<a class="jxr_linenumber" name="L427" href="#L427">427</a> <em class="jxr_comment">// continue</em> +<a class="jxr_linenumber" name="L428" href="#L428">428</a> <strong class="jxr_keyword">if</strong> (isEscape(cur)) { +<a class="jxr_linenumber" name="L429" href="#L429">429</a> appendNextEscapedCharacterToToken(token); +<a class="jxr_linenumber" name="L430" href="#L430">430</a> } <strong class="jxr_keyword">else</strong> { +<a class="jxr_linenumber" name="L431" href="#L431">431</a> token.content.append((<strong class="jxr_keyword">char</strong>) cur); +<a class="jxr_linenumber" name="L432" href="#L432">432</a> } +<a class="jxr_linenumber" name="L433" href="#L433">433</a> cur = reader.read(); <em class="jxr_comment">// continue</em> +<a class="jxr_linenumber" name="L434" href="#L434">434</a> } +<a class="jxr_linenumber" name="L435" href="#L435">435</a> +<a class="jxr_linenumber" name="L436" href="#L436">436</a> <strong class="jxr_keyword">if</strong> (ignoreSurroundingSpaces) { +<a class="jxr_linenumber" name="L437" href="#L437">437</a> trimTrailingSpaces(token.content); +<a class="jxr_linenumber" name="L438" href="#L438">438</a> } +<a class="jxr_linenumber" name="L439" href="#L439">439</a> +<a class="jxr_linenumber" name="L440" href="#L440">440</a> <strong class="jxr_keyword">return</strong> token; +<a class="jxr_linenumber" name="L441" href="#L441">441</a> } +<a class="jxr_linenumber" name="L442" href="#L442">442</a> +<a class="jxr_linenumber" name="L443" href="#L443">443</a> <em class="jxr_javadoccomment">/**</em> +<a class="jxr_linenumber" name="L444" href="#L444">444</a> <em class="jxr_javadoccomment"> * Greedily accepts \n, \r and \r\n This checker consumes silently the second control-character...</em> +<a class="jxr_linenumber" name="L445" href="#L445">445</a> <em class="jxr_javadoccomment"> *</em> +<a class="jxr_linenumber" name="L446" href="#L446">446</a> <em class="jxr_javadoccomment"> * @return true if the given or next character is a line-terminator</em> +<a class="jxr_linenumber" name="L447" href="#L447">447</a> <em class="jxr_javadoccomment"> */</em> +<a class="jxr_linenumber" name="L448" href="#L448">448</a> <strong class="jxr_keyword">boolean</strong> readEndOfLine(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ch) <strong class="jxr_keyword">throws</strong> IOException { +<a class="jxr_linenumber" name="L449" href="#L449">449</a> <em class="jxr_comment">// check if we have \r\n...</em> +<a class="jxr_linenumber" name="L450" href="#L450">450</a> <strong class="jxr_keyword">int</strong> cur = ch; +<a class="jxr_linenumber" name="L451" href="#L451">451</a> <strong class="jxr_keyword">if</strong> (cur == Constants.CR && reader.peek() == Constants.LF) { +<a class="jxr_linenumber" name="L452" href="#L452">452</a> <em class="jxr_comment">// note: does not change ch outside of this method!</em> +<a class="jxr_linenumber" name="L453" href="#L453">453</a> cur = reader.read(); +<a class="jxr_linenumber" name="L454" href="#L454">454</a> <em class="jxr_comment">// Save the EOL state</em> +<a class="jxr_linenumber" name="L455" href="#L455">455</a> <strong class="jxr_keyword">if</strong> (firstEol == <strong class="jxr_keyword">null</strong>) { +<a class="jxr_linenumber" name="L456" href="#L456">456</a> <strong class="jxr_keyword">this</strong>.firstEol = Constants.CRLF; +<a class="jxr_linenumber" name="L457" href="#L457">457</a> } +<a class="jxr_linenumber" name="L458" href="#L458">458</a> } +<a class="jxr_linenumber" name="L459" href="#L459">459</a> <em class="jxr_comment">// save EOL state here.</em> +<a class="jxr_linenumber" name="L460" href="#L460">460</a> <strong class="jxr_keyword">if</strong> (firstEol == <strong class="jxr_keyword">null</strong>) { +<a class="jxr_linenumber" name="L461" href="#L461">461</a> <strong class="jxr_keyword">if</strong> (cur == Constants.LF) { +<a class="jxr_linenumber" name="L462" href="#L462">462</a> <strong class="jxr_keyword">this</strong>.firstEol = LF_STRING; +<a class="jxr_linenumber" name="L463" href="#L463">463</a> } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cur == Constants.CR) { +<a class="jxr_linenumber" name="L464" href="#L464">464</a> <strong class="jxr_keyword">this</strong>.firstEol = CR_STRING; +<a class="jxr_linenumber" name="L465" href="#L465">465</a> } +<a class="jxr_linenumber" name="L466" href="#L466">466</a> } +<a class="jxr_linenumber" name="L467" href="#L467">467</a> +<a class="jxr_linenumber" name="L468" href="#L468">468</a> <strong class="jxr_keyword">return</strong> cur == Constants.LF || cur == Constants.CR; +<a class="jxr_linenumber" name="L469" href="#L469">469</a> } +<a class="jxr_linenumber" name="L470" href="#L470">470</a> +<a class="jxr_linenumber" name="L471" href="#L471">471</a> <em class="jxr_comment">// TODO escape handling needs more work</em> +<a class="jxr_linenumber" name="L472" href="#L472">472</a> <em class="jxr_javadoccomment">/**</em> +<a class="jxr_linenumber" name="L473" href="#L473">473</a> <em class="jxr_javadoccomment"> * Handle an escape sequence. The current character must be the escape character. On return, the next character is available by calling</em> +<a class="jxr_linenumber" name="L474" href="#L474">474</a> <em class="jxr_javadoccomment"> * {@link ExtendedBufferedReader#getLastChar()} on the input stream.</em> +<a class="jxr_linenumber" name="L475" href="#L475">475</a> <em class="jxr_javadoccomment"> *</em> +<a class="jxr_linenumber" name="L476" href="#L476">476</a> <em class="jxr_javadoccomment"> * @return the unescaped character (as an int) or {@link IOUtils#EOF} if char following the escape is invalid.</em> +<a class="jxr_linenumber" name="L477" href="#L477">477</a> <em class="jxr_javadoccomment"> * @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</em> +<a class="jxr_linenumber" name="L478" href="#L478">478</a> <em class="jxr_javadoccomment"> * @throws CSVException Thrown on invalid input.</em> +<a class="jxr_linenumber" name="L479" href="#L479">479</a> <em class="jxr_javadoccomment"> */</em> +<a class="jxr_linenumber" name="L480" href="#L480">480</a> <strong class="jxr_keyword">int</strong> readEscape() <strong class="jxr_keyword">throws</strong> IOException { +<a class="jxr_linenumber" name="L481" href="#L481">481</a> <em class="jxr_comment">// the escape char has just been read (normally a backslash)</em> +<a class="jxr_linenumber" name="L482" href="#L482">482</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ch = reader.read(); +<a class="jxr_linenumber" name="L483" href="#L483">483</a> <strong class="jxr_keyword">switch</strong> (ch) { +<a class="jxr_linenumber" name="L484" href="#L484">484</a> <strong class="jxr_keyword">case</strong> 'r': +<a class="jxr_linenumber" name="L485" href="#L485">485</a> <strong class="jxr_keyword">return</strong> Constants.CR; +<a class="jxr_linenumber" name="L486" href="#L486">486</a> <strong class="jxr_keyword">case</strong> 'n': +<a class="jxr_linenumber" name="L487" href="#L487">487</a> <strong class="jxr_keyword">return</strong> Constants.LF; +<a class="jxr_linenumber" name="L488" href="#L488">488</a> <strong class="jxr_keyword">case</strong> 't': +<a class="jxr_linenumber" name="L489" href="#L489">489</a> <strong class="jxr_keyword">return</strong> Constants.TAB; +<a class="jxr_linenumber" name="L490" href="#L490">490</a> <strong class="jxr_keyword">case</strong> 'b': +<a class="jxr_linenumber" name="L491" href="#L491">491</a> <strong class="jxr_keyword">return</strong> Constants.BACKSPACE; +<a class="jxr_linenumber" name="L492" href="#L492">492</a> <strong class="jxr_keyword">case</strong> 'f': +<a class="jxr_linenumber" name="L493" href="#L493">493</a> <strong class="jxr_keyword">return</strong> Constants.FF; +<a class="jxr_linenumber" name="L494" href="#L494">494</a> <strong class="jxr_keyword">case</strong> Constants.CR: +<a class="jxr_linenumber" name="L495" href="#L495">495</a> <strong class="jxr_keyword">case</strong> Constants.LF: +<a class="jxr_linenumber" name="L496" href="#L496">496</a> <strong class="jxr_keyword">case</strong> Constants.FF: <em class="jxr_comment">// TODO is this correct?</em> +<a class="jxr_linenumber" name="L497" href="#L497">497</a> <strong class="jxr_keyword">case</strong> Constants.TAB: <em class="jxr_comment">// TODO is this correct? Do tabs need to be escaped?</em> +<a class="jxr_linenumber" name="L498" href="#L498">498</a> <strong class="jxr_keyword">case</strong> Constants.BACKSPACE: <em class="jxr_comment">// TODO is this correct?</em> +<a class="jxr_linenumber" name="L499" href="#L499">499</a> <strong class="jxr_keyword">return</strong> ch; +<a class="jxr_linenumber" name="L500" href="#L500">500</a> <strong class="jxr_keyword">case</strong> EOF: +<a class="jxr_linenumber" name="L501" href="#L501">501</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="CSVException" href="../../../../org/apache/commons/csv/CSVException.html#CSVException">CSVException</a>(<span class="jxr_string">"EOF while processing escape sequence"</span>); +<a class="jxr_linenumber" name="L502" href="#L502">502</a> <strong class="jxr_keyword">default</strong>: +<a class="jxr_linenumber" name="L503" href="#L503">503</a> <em class="jxr_comment">// Now check for meta-characters</em> +<a class="jxr_linenumber" name="L504" href="#L504">504</a> <strong class="jxr_keyword">if</strong> (isMetaChar(ch)) { +<a class="jxr_linenumber" name="L505" href="#L505">505</a> <strong class="jxr_keyword">return</strong> ch; +<a class="jxr_linenumber" name="L506" href="#L506">506</a> } +<a class="jxr_linenumber" name="L507" href="#L507">507</a> <em class="jxr_comment">// indicate unexpected char - available from in.getLastChar()</em> +<a class="jxr_linenumber" name="L508" href="#L508">508</a> <strong class="jxr_keyword">return</strong> EOF; +<a class="jxr_linenumber" name="L509" href="#L509">509</a> } +<a class="jxr_linenumber" name="L510" href="#L510">510</a> } +<a class="jxr_linenumber" name="L511" href="#L511">511</a> +<a class="jxr_linenumber" name="L512" href="#L512">512</a> <strong class="jxr_keyword">void</strong> trimTrailingSpaces(<strong class="jxr_keyword">final</strong> StringBuilder buffer) { +<a class="jxr_linenumber" name="L513" href="#L513">513</a> <strong class="jxr_keyword">int</strong> length = buffer.length(); +<a class="jxr_linenumber" name="L514" href="#L514">514</a> <strong class="jxr_keyword">while</strong> (length > 0 && Character.isWhitespace(buffer.charAt(length - 1))) { +<a class="jxr_linenumber" name="L515" href="#L515">515</a> length--; +<a class="jxr_linenumber" name="L516" href="#L516">516</a> } +<a class="jxr_linenumber" name="L517" href="#L517">517</a> <strong class="jxr_keyword">if</strong> (length != buffer.length()) { +<a class="jxr_linenumber" name="L518" href="#L518">518</a> buffer.setLength(length); +<a class="jxr_linenumber" name="L519" href="#L519">519</a> } +<a class="jxr_linenumber" name="L520" href="#L520">520</a> } +<a class="jxr_linenumber" name="L521" href="#L521">521</a> } </pre> <hr/> <div id="footer">© 2005â2025 <a href="https://www.apache.org/">The Apache Software Foundation</a></div>
Modified: websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/QuoteMode.html ============================================================================== --- websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/QuoteMode.html (original) +++ websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/QuoteMode.html Sat Jan 11 14:23:31 2025 @@ -1,5 +1,5 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang=""> <head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>QuoteMode xref</title> <link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" /> Modified: websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/Token.html ============================================================================== --- websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/Token.html (original) +++ websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/Token.html Sat Jan 11 14:23:31 2025 @@ -1,5 +1,5 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang=""> <head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Token xref</title> <link type="text/css" rel="stylesheet" href="../../../../stylesheet.css" /> Modified: websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/package-frame.html ============================================================================== --- websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/package-frame.html (original) +++ websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/package-frame.html Sat Jan 11 14:23:31 2025 @@ -4,7 +4,7 @@ <!-- generated by Apache Maven JXR (jdk8) --> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> - <title>Apache Commons CSV 1.13.0-SNAPSHOT Reference Package org.apache.commons.csv</title> + <title>Apache Commons CSV 1.13.0 Reference Package org.apache.commons.csv</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" /> </head> <body> Modified: websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/package-summary.html ============================================================================== --- websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/package-summary.html (original) +++ websites/production/commons/content/proper/commons-csv/xref/org/apache/commons/csv/package-summary.html Sat Jan 11 14:23:31 2025 @@ -4,7 +4,7 @@ <!-- generated by Apache Maven JXR (jdk8) --> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> - <title>Apache Commons CSV 1.13.0-SNAPSHOT Reference Package org.apache.commons.csv</title> + <title>Apache Commons CSV 1.13.0 Reference Package org.apache.commons.csv</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="style" /> </head> @@ -23,7 +23,7 @@ <li>Index</li> <li>Help</li> </ul> - <div class="aboutLanguage"><em><strong>Apache Commons CSV 1.13.0-SNAPSHOT Reference</strong></em></div> + <div class="aboutLanguage"><em><strong>Apache Commons CSV 1.13.0 Reference</strong></em></div> </div> <div class="subNav"> <ul class="navList"> @@ -161,7 +161,7 @@ <li>Index</li> <li>Help</li> </ul> - <div class="aboutLanguage"><em><strong>Apache Commons CSV 1.13.0-SNAPSHOT Reference</strong></em></div> + <div class="aboutLanguage"><em><strong>Apache Commons CSV 1.13.0 Reference</strong></em></div> </div> <div class="subNav"> <ul class="navList"> Modified: websites/production/commons/content/proper/commons-csv/xref/overview-frame.html ============================================================================== --- websites/production/commons/content/proper/commons-csv/xref/overview-frame.html (original) +++ websites/production/commons/content/proper/commons-csv/xref/overview-frame.html Sat Jan 11 14:23:31 2025 @@ -4,11 +4,11 @@ <!-- generated by Apache Maven JXR (jdk8) --> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> - <title>Apache Commons CSV 1.13.0-SNAPSHOT Reference</title> + <title>Apache Commons CSV 1.13.0 Reference</title> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" /> </head> <body> - <h1 title="Apache Commons CSV 1.13.0-SNAPSHOT Reference" class="bar"><strong>Apache Commons CSV 1.13.0-SNAPSHOT Reference</strong></h1> + <h1 title="Apache Commons CSV 1.13.0 Reference" class="bar"><strong>Apache Commons CSV 1.13.0 Reference</strong></h1> <div class="indexHeader"><span><a href="allclasses-frame.html" target="packageFrame">All Classes</a></span></div> <div class="indexContainer"> <h2 title="Packages">Packages</h2> Modified: websites/production/commons/content/proper/commons-csv/xref/overview-summary.html ============================================================================== --- websites/production/commons/content/proper/commons-csv/xref/overview-summary.html (original) +++ websites/production/commons/content/proper/commons-csv/xref/overview-summary.html Sat Jan 11 14:23:31 2025 @@ -4,7 +4,7 @@ <!-- generated by Apache Maven JXR (jdk7) --> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> - <title>Apache Commons CSV 1.13.0-SNAPSHOT Reference</title> + <title>Apache Commons CSV 1.13.0 Reference</title> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" /> </head> <body> @@ -22,7 +22,7 @@ <li>Index</li> <li>Help</li> </ul> - <div class="aboutLanguage"><em><strong>Apache Commons CSV 1.13.0-SNAPSHOT Reference</strong></em></div> + <div class="aboutLanguage"><em><strong>Apache Commons CSV 1.13.0 Reference</strong></em></div> </div> <div class="subNav"> <ul class="navList"> @@ -37,7 +37,7 @@ </div> <div class="header"> - <h1 class="title">Apache Commons CSV 1.13.0-SNAPSHOT Reference</h1> + <h1 class="title">Apache Commons CSV 1.13.0 Reference</h1> </div> <div class="contentContainer"> <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Packages table, listing packages"> @@ -71,7 +71,7 @@ <li>Index</li> <li>Help</li> </ul> - <div class="aboutLanguage"><em><strong>Apache Commons CSV 1.13.0-SNAPSHOT Reference</strong></em></div> + <div class="aboutLanguage"><em><strong>Apache Commons CSV 1.13.0 Reference</strong></em></div> </div> <div class="subNav"> <ul class="navList">
