private boolean append()

in src/main/java/com/univocity/parsers/csv/CsvWriter.java [259:328]


	private boolean append(boolean isElementQuoted, String element) {
		if (element == null) {
			if (nullValue == null) {
				return isElementQuoted;
			}
			element = nullValue;
		}

		int start = 0;
		if (this.ignoreLeading) {
			start = skipLeadingWhitespace(whitespaceRangeStart, element);
		}

		final int length = element.length();
		if (start < length && element.charAt(start) == quoteChar) {
			isElementQuoted = true;
		}

		if (isElementQuoted) {
			if (usingNullOrEmptyValue && length >= 2) {
				if (element.charAt(0) == quoteChar && element.charAt(length - 1) == quoteChar) {
					appender.append(element);
					return false;
				} else {
					appendQuoted(start, element);
					return true;
				}
			} else {
				appendQuoted(start, element);
				return true;
			}
		}

		int i = start;
		char ch = '\0';
		for (; i < length; i++) {
			ch = element.charAt(i);
			if (ch == quoteChar || ch == separator || ch == newLine || ch == escapeChar || (ch < maxTrigger && quotationTriggers[ch])) {
				appender.append(element, start, i);
				start = i + 1;

				if (ch == quoteChar || ch == escapeChar) {
					if (quoteElement(i, element)) {
						appendQuoted(i, element);
						return true;
					} else if (escapeUnquoted) {
						appendQuoted(i, element);
					} else {
						appender.append(element, i, length);
						if (ignoreTrailing && element.charAt(length - 1) <= ' ' && whitespaceRangeStart < element.charAt(length - 1)) {
							appender.updateWhitespace();
						}
					}
					return isElementQuoted;
				} else if (ch == escapeChar && inputNotEscaped && escapeEscape != '\0' && escapeUnquoted) {
					appender.append(escapeEscape);
				} else if (ch == separator || ch == newLine || ch < maxTrigger && quotationTriggers[ch]) {
					appendQuoted(i, element);
					return true;
				}
				appender.append(ch);
			}
		}

		appender.append(element, start, i);
		if (ch <= ' ' && ignoreTrailing && whitespaceRangeStart < ch) {
			appender.updateWhitespace();
		}
		return isElementQuoted;
	}