MeiliRankingScoreDetails.fromJson constructor

MeiliRankingScoreDetails.fromJson(
  1. Map<String, dynamic> src
)

Implementation

factory MeiliRankingScoreDetails.fromJson(Map<String, dynamic> src) {
  final reservedKeys = {
    'attribute',
    'words',
    'exactness',
    'proximity',
    'typo',
  };

  T? ruleGuarded<T>(
    String key,
    T Function(Map<String, dynamic> src) mapper,
  ) {
    final v = src[key];
    if (v == null) {
      return null;
    }
    return mapper(v as Map<String, dynamic>);
  }

  return MeiliRankingScoreDetails._(
    src: src,
    attribute: ruleGuarded(
      'attribute',
      MeiliRankingScoreDetailsAttributeRule.fromJson,
    ),
    words: ruleGuarded(
      'words',
      MeiliRankingScoreDetailsWordsRule.fromJson,
    ),
    exactness: ruleGuarded(
      'exactness',
      MeiliRankingScoreDetailsExactnessRule.fromJson,
    ),
    proximity: ruleGuarded(
      'proximity',
      MeiliRankingScoreDetailsProximityRule.fromJson,
    ),
    typo: ruleGuarded(
      'typo',
      MeiliRankingScoreDetailsTypoRule.fromJson,
    ),
    customRules: {
      for (var custom in src.entries
          .where((element) => !reservedKeys.contains(element.key)))
        custom.key: MeiliRankingScoreDetailsCustomRule.fromJson(
          custom.value as Map<String, dynamic>,
        )
    },
  );
}