2014-08-12 15:38:23 +00:00
|
|
|
package com.moandjiezana.toml;
|
|
|
|
|
2014-08-13 12:31:50 +00:00
|
|
|
import static com.moandjiezana.toml.ValueConverterUtils.INVALID;
|
2015-02-10 22:59:48 +00:00
|
|
|
import static com.moandjiezana.toml.ValueConverterUtils.isComment;
|
|
|
|
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
2014-08-12 14:44:47 +00:00
|
|
|
|
2014-08-13 12:27:23 +00:00
|
|
|
|
2014-08-13 12:31:50 +00:00
|
|
|
class BooleanConverter implements ValueConverter {
|
2014-08-12 14:44:47 +00:00
|
|
|
|
2014-08-13 12:31:50 +00:00
|
|
|
static final BooleanConverter BOOLEAN_PARSER = new BooleanConverter();
|
2014-08-12 14:44:47 +00:00
|
|
|
|
|
|
|
@Override
|
2014-08-13 12:31:50 +00:00
|
|
|
public boolean canConvert(String s) {
|
2014-08-12 14:44:47 +00:00
|
|
|
return s.startsWith("true") || s.startsWith("false");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-08-13 12:31:50 +00:00
|
|
|
public Object convert(String s) {
|
2015-02-10 22:59:48 +00:00
|
|
|
AtomicInteger index = new AtomicInteger();
|
|
|
|
Object converted = convert(s, index);
|
|
|
|
|
|
|
|
if (!isComment(s.substring(index.incrementAndGet()))) {
|
|
|
|
return INVALID;
|
|
|
|
}
|
|
|
|
|
|
|
|
return converted;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Object convert(String s, AtomicInteger index) {
|
|
|
|
s = s.substring(index.get());
|
2015-01-23 13:27:48 +00:00
|
|
|
Boolean b = s.startsWith("true") ? Boolean.TRUE : Boolean.FALSE;
|
2014-08-13 12:27:23 +00:00
|
|
|
|
2015-01-23 13:27:48 +00:00
|
|
|
int endIndex = b == Boolean.TRUE ? 4 : 5;
|
|
|
|
|
2015-02-10 22:59:48 +00:00
|
|
|
index.addAndGet(endIndex - 1);
|
2014-08-12 14:44:47 +00:00
|
|
|
|
2015-01-23 13:27:48 +00:00
|
|
|
return b;
|
2014-08-12 14:44:47 +00:00
|
|
|
}
|
|
|
|
|
2014-08-13 12:31:50 +00:00
|
|
|
private BooleanConverter() {}
|
2014-08-12 14:44:47 +00:00
|
|
|
}
|