package pl.brightinventions.slf4android;
public class HandlerFormatterCompiler {
private final LoggerPatternConfiguration configuration;
public HandlerFormatterCompiler(LoggerPatternConfiguration configuration) {
this.configuration = configuration;
}
public LogRecordFormatter compile(String formatterPattern) {
ListLogRecordFormatter formatter = new ListLogRecordFormatter();
while (!TextUtils.isEmpty(formatterPattern)) {
int firstPatternIndex = Integer.MAX_VALUE;
LoggerPattern firstPattern = null;
for (LoggerPattern loggerPattern : configuration.getPatterns()) {
String pattern = loggerPattern.getPattern();
int patternIndex = formatterPattern.indexOf(pattern);
if (patternIndex != -1 && patternIndex < firstPatternIndex) {
firstPatternIndex = patternIndex;
firstPattern = loggerPattern;
}
}
if (firstPattern != null) {
if (firstPatternIndex > 0) {
formatter.add(new ConstLoggerValueSupplier(formatterPattern.substring(0, firstPatternIndex)));
}
formatter.add(firstPattern);
formatterPattern = formatterPattern.substring(firstPatternIndex + firstPattern.getPattern().length());
} else {
formatter.add(new ConstLoggerValueSupplier(formatterPattern));
formatterPattern = null;
}
}
return formatter;
}
}