parserFor<T> static method

TypeElementParser? parserFor<T>({
  1. Object? obj,
  2. Type? type,
})

Returns the parser for the desired type, defined by T, obj or type.

Implementation

static TypeElementParser? parserFor<T>({Object? obj, Type? type}) {
  if (obj != null) {
    if (obj is String) {
      return parseString;
    } else if (obj is Map) {
      return parseMap;
    } else if (obj is Set) {
      return parseSet;
    } else if (obj is List || obj is Iterable) {
      return parseList;
    } else if (obj is int) {
      return parseInt;
    } else if (obj is double) {
      return parseDouble;
    } else if (obj is num) {
      return parseNum;
    } else if (obj is bool) {
      return parseBool;
    } else if (obj is BigInt) {
      return parseBigInt;
    } else if (obj is DateTime) {
      return parseDateTime;
    }
  }

  type ??= obj?.runtimeType ?? T;

  if (type == String) {
    return parseString;
  } else if (type == Map) {
    return parseMap;
  } else if (type == Set) {
    return parseSet;
  } else if (type == List) {
    return parseList;
  } else if (type == int) {
    return parseInt;
  } else if (type == double) {
    return parseDouble;
  } else if (type == num) {
    return parseNum;
  } else if (type == bool) {
    return parseBool;
  } else if (type == BigInt) {
    return parseBigInt;
  } else if (type == DateTime) {
    return parseDateTime;
  }

  for (var r in _parsersResolvers) {
    var parser = r(t: T, type: type, obj: obj);
    if (parser != null) return parser;
  }

  return null;
}