WitGeneratorConfig.fromJson constructor

WitGeneratorConfig.fromJson(
  1. Object? json_
)

Returns a new instance from a JSON value. May throw if the value does not have the expected structure.

Implementation

factory WitGeneratorConfig.fromJson(Object? json_) {
  final json = json_ is Map
      ? _spec.fields.map((f) => json_[f.label]).toList(growable: false)
      : json_;
  return switch (json) {
    [
      final inputs,
      final jsonSerialization,
      final copyWith_,
      final equalityAndHashCode,
      final toString_,
      final generateDocs,
      final fileHeader,
      final objectComparator,
      final useNullForOption,
      final requiredOption,
      final int64Type,
      final typedNumberLists,
      final asyncWorker,
      final sameClassUnion,
    ] ||
    (
      final inputs,
      final jsonSerialization,
      final copyWith_,
      final equalityAndHashCode,
      final toString_,
      final generateDocs,
      final fileHeader,
      final objectComparator,
      final useNullForOption,
      final requiredOption,
      final int64Type,
      final typedNumberLists,
      final asyncWorker,
      final sameClassUnion,
    ) => WitGeneratorConfig(
      inputs: WitGeneratorInput.fromJson(inputs),
      jsonSerialization: jsonSerialization! as bool,
      copyWith_: copyWith_! as bool,
      equalityAndHashCode: equalityAndHashCode! as bool,
      toString_: toString_! as bool,
      generateDocs: generateDocs! as bool,
      fileHeader: Option.fromJson(
        fileHeader,
        (some) => some is String ? some : (some! as ParsedString).value,
      ).value,
      objectComparator: Option.fromJson(
        objectComparator,
        (some) => some is String ? some : (some! as ParsedString).value,
      ).value,
      useNullForOption: useNullForOption! as bool,
      requiredOption: requiredOption! as bool,
      int64Type: Int64TypeConfig.fromJson(int64Type),
      typedNumberLists: typedNumberLists! as bool,
      asyncWorker: asyncWorker! as bool,
      sameClassUnion: sameClassUnion! as bool,
    ),
    _ => throw Exception('Invalid JSON $json_'),
  };
}