Settings.fromJson constructor

Settings.fromJson(
  1. Map json
)

Implementation

factory Settings.fromJson(Map json) {
  final settings = _$SettingsFromJson(json);

  final patterns = <String, List<String>>{};

  settings.avoidEvents.forEach(
    (e) => patterns.putIfAbsent(e, () => []).add('avoid_events'),
  );
  settings.avoidStates.forEach(
    (e) => patterns.putIfAbsent(e, () => []).add('avoid_states'),
  );

  // make sure that the priorities patterns are valid regex
  for (final MapEntry(key: pattern, value: locations) in patterns.entries) {
    try {
      RegExp(pattern);
    } catch (error) {
      throw ArgumentError.value(
        pattern,
        'Found in ${locations.join(',')}',
        error,
      );
    }
  }
  return settings;
}