letMapOrNone<K extends Object, V extends Object> function
Converts input
to Map<K, Option<V>>
, returning None on failure.
Supported types:
Implementation
Option<Map<K, Option<V>>> letMapOrNone<K extends Object, V extends Object>(
dynamic input,
) {
if (input is Outcome) {
return switch (input.rawSync().value) {
Ok(value: final okValue) => letMapOrNone<K, V>(
NoStackOverflowWrapper(okValue),
),
Err() => const None(),
};
}
return switch (input is NoStackOverflowWrapper ? input.value : input) {
final Map<dynamic, dynamic> m => _convertMapOrNone<K, V>(m),
final String s => jsonDecodeOrNone<Map<dynamic, dynamic>>(
s.trim(),
).map((d) => _convertMapOrNone<K, V>(d)).flatten(),
final Outcome m => switch (m.rawSync().value) {
Ok(value: final okValue) => letMapOrNone<K, V>(okValue),
Err() => const None(),
},
_ => const None(),
};
}