23 lines
524 B
GDScript3
Raw Permalink Normal View History

2024-12-27 21:00:07 +01:00
static func case_(
mapper : Callable,
sources : Dictionary,
default_source : Observable = null
) -> Observable:
var default_source_ : Observable = default_source if default_source != null else GDRx.obs.empty()
var factory = func(__ : SchedulerBase) -> Observable:
var key_ = mapper.call()
var result
if not sources.has(key_):
result = default_source_
else:
result = sources[key_]
if not result is Observable:
return BadMappingError.raise()
return result
return GDRx.obs.defer(factory)