createMappingResolver static method
ZoneLocalMappingResolver
createMappingResolver(
- AmbiguousTimeResolver ambiguousTimeResolver,
- SkippedTimeResolver skippedTimeResolver
Combines an ambiguousTimeResolver
and a SkippedTimeResolver to create a
ZoneLocalMappingResolver.
The ZoneLocalMappingResolver
created by this method operates in the obvious way: unambiguous mappings
are returned directly, ambiguous mappings are delegated to the given AmbiguousTimeResolver
, and
'skipped' mappings are delegated to the given SkippedTimeResolver
.
ambiguousTimeResolver
: Resolver to use for ambiguous mappings.
skippedTimeResolver
: Resolver to use for 'skipped' mappings.
Returns: The logical combination of the two resolvers.
Implementation
static ZoneLocalMappingResolver createMappingResolver(AmbiguousTimeResolver ambiguousTimeResolver, SkippedTimeResolver skippedTimeResolver) {
// typedef ZoneLocalMappingResolver = ZonedDateTime Function(ZoneLocalMapping mapping);
Preconditions.checkNotNull(ambiguousTimeResolver, 'ambiguousTimeResolver');
Preconditions.checkNotNull(skippedTimeResolver, 'skippedTimeResolver');
ZonedDateTime mappingResolve(ZoneLocalMapping mapping) {
Preconditions.checkNotNull(mapping, 'mapping');
switch (mapping.count) {
case 0:
return skippedTimeResolver(mapping.localDateTime, mapping.zone, mapping.earlyInterval, mapping.lateInterval);
case 1:
return mapping.first();
case 2:
return ambiguousTimeResolver(mapping.first(), mapping.last());
default:
throw StateError('Mapping has count outside range 0-2; should not happen.');
}
}
return mappingResolve;
}