package org.simpleflatmapper.csv.impl.cellreader;
import org.simpleflatmapper.csv.ParsingContext;
public final class BooleanCellValueReaderImpl implements BooleanCellValueReader {
@Override
public Boolean read(char[] chars, int offset, int length, ParsingContext parsingContext) {
if (length == 0) return null;
return readBoolean(chars, offset, length, parsingContext);
}
@Override
public boolean readBoolean(char[] chars, int offset, int length, ParsingContext parsingContext) {
return parseBoolean(chars, offset, length);
}
public static boolean parseBoolean(char[] chars, int offset, int length) {
switch (length) {
case 0:
return false;
case 1:
switch (chars[offset]) {
case 0:
case '0':
case 'F':
case 'f':
case 'n':
case 'N':
return false;
default:
return true;
}
case 2:
if ((chars[offset] == 'N' || chars[offset] == 'n')
&& (chars[offset + 1] == 'O' || chars[offset + 1] == 'o')) {
return false;
}
case 5:
if (
(chars[offset] == 'F' || chars[offset] == 'f')
&& (chars[offset + 1] == 'A' || chars[offset + 1] == 'a')
&& (chars[offset + 2] == 'L' || chars[offset + 2] == 'l')
&& (chars[offset + 3] == 'S' || chars[offset + 3] == 's')
&& (chars[offset + 4] == 'E' || chars[offset + 4] == 'e')
) {
return false;
}
}
return true;
}
@Override
public String toString() {
return "BooleanCellValueReaderImpl{}";
}
}