createParseResult<I, O, R> function
ParseResult<I, R>
createParseResult<
I, O, R>( - State<I> state,
- R result,
- bool isSuccess(
- R result
), {
- String errorMessage(
- I input,
- int offset,
- List<ErrorMessage> errors
)?,
- String? locale,
- Map<String, MessageLocalization> messages = const {},
- Map<String, String> tags = const {},
})
Implementation
ParseResult<I, R> createParseResult<I, O, R>(
State<I> state,
R result,
bool Function(R result) isSuccess, {
String Function(I input, int offset, List<ErrorMessage> errors)? errorMessage,
String? locale,
Map<String, MessageLocalization> messages = const {},
Map<String, String> tags = const {},
}) {
final input = state.input;
if (isSuccess(result)) {
return ParseResult(
failPos: state.failPos,
input: input,
pos: state.pos,
result: result,
);
}
final offset = state.failPos;
final normalized = _normalize(input, offset, state.getErrors());
final localized =
_localize(input, offset, normalized, locale, messages, tags);
String? message;
if (errorMessage != null) {
message = errorMessage(input, offset, localized);
} else if (input is StringReader) {
if (input.hasSource) {
message = _errorMessage(input.source, offset, localized);
} else {
message = _errorMessage2(input, offset, localized);
}
} else if (input is String) {
message = _errorMessage(input, offset, localized);
} else {
message = localized.join('\n');
}
return ParseResult(
errors: localized,
failPos: state.failPos,
input: input,
errorMessage: message,
pos: state.pos,
result: result,
);
}