parse function

dynamic parse(
  1. String? s
)

Implementation

dynamic parse(String? s) {
  if (s == null) return null;
  if (s == '') return '';

  if (_parsers.isEmpty) {
    _ensureInitialized();
  }

  s = s.replaceAllMapped(RegExp(r'\\+$'), (match) {
    return match.group(0)!.length % 2 == 0
        ? match.group(0)!
        : match.group(0)!.substring(0, match.group(0)!.length - 1);
  });

  try {
    return jsonDecode(s);
  } catch (e) {
    ParseResult data;
    if (s.trimLeft().startsWith(':')) {
      data = _parseAny(s, e);
    } else {
      data = _parseAny(s, e, fallback: _parseStringWithoutQuote);
    }
    lastParseReminding = data[1];
    if (onExtraToken != null && (data[1] as String).trimRight().isNotEmpty) {
      onExtraToken!(s, data[0], (data[1] as String).trimRight());
    }
    return data[0];
  }
}