23 lines
524 B
GDScript
23 lines
524 B
GDScript
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)
|