*
* @param lineNumber
* the current line number, starts at 1 (the header, if header
- * processing is enabled, the first lien otherwise)
+ * processing is enabled, the first line otherwise)
* @param header
* the read-only header or null if {@link #setNoHeader(Boolean)}
* is true (default is false)
* @param tokens
- * the parse tokens
+ * the parsed tokens
*/
protected abstract void processLine(Integer lineNumber,
List<String> header, List<String> tokens);
StringBuffer currStr = new StringBuffer("");
Boolean wasInquote = false;
while (parseLine(headerStr, header, currStr, wasInquote)) {
+ headerStr = reader.readLine();
+ if (headerStr == null)
+ break;
wasInquote = true;
}
header = Collections.unmodifiableList(header);
StringBuffer currStr, Boolean wasInquote) {
// List<String> tokens = new ArrayList<String>();
- //System.out.println("#LINE: " + str);
+ // System.out.println("#LINE: " + str);
if (wasInquote)
currStr.append('\n');
if (c == separator) {
if (!inQuote) {
tokens.add(currStr.toString());
- //System.out.println("# TOKEN: " + currStr);
+ // System.out.println("# TOKEN: " + currStr);
currStr.delete(0, currStr.length());
+ } else {
+ // we don't remove separator that are in a quoted substring
+ // System.out
+ // .println("IN QUOTE, got a separator: [" + c + "]");
+ currStr.append(c);
}
} else if (c == quote) {
if (inQuote && (i + 1) < arr.length && arr[i + 1] == quote) {
if (!inQuote) {
tokens.add(currStr.toString());
- //System.out.println("# TOKEN: " + currStr);
+ // System.out.println("# TOKEN: " + currStr);
}
// if (inQuote)
// throw new ArgeoException("Missing quote at the end of the line "