ReferenceParser constructor
ReferenceParser({
- Map<
String, BibleBookEnum> aliases = const {}, - Map<
BibleLanguageEnum, Map< aliasesByLanguage = const {},String, BibleBookEnum> > - Iterable<
BibleLanguageEnum> preferredLanguages = const [], - ReferenceAmbiguityPolicy ambiguityPolicy = ReferenceAmbiguityPolicy.preferLanguagePriority,
Implementation
factory ReferenceParser({
Map<String, BibleBookEnum> aliases = const {},
Map<BibleLanguageEnum, Map<String, BibleBookEnum>> aliasesByLanguage =
const {},
Iterable<BibleLanguageEnum> preferredLanguages = const [],
ReferenceAmbiguityPolicy ambiguityPolicy =
ReferenceAmbiguityPolicy.preferLanguagePriority,
}) {
final aliasesCopy = Map<String, BibleBookEnum>.unmodifiable(aliases);
final localizedCopy = <BibleLanguageEnum, Map<String, BibleBookEnum>>{};
for (final entry in aliasesByLanguage.entries) {
if (entry.key == BibleLanguageEnum.auto) {
throw ArgumentError.value(
entry.key,
'aliasesByLanguage',
'auto is not a concrete alias language',
);
}
localizedCopy[entry.key] =
Map<String, BibleBookEnum>.unmodifiable(entry.value);
}
final preferredCopy = <BibleLanguageEnum>[];
for (final language in preferredLanguages) {
if (language == BibleLanguageEnum.auto) {
throw ArgumentError.value(
language,
'preferredLanguages',
'auto is not a concrete preferred language',
);
}
if (!preferredCopy.contains(language)) preferredCopy.add(language);
}
return ReferenceParser._(
aliases: aliasesCopy,
aliasesByLanguage: Map.unmodifiable(localizedCopy),
preferredLanguages: List.unmodifiable(preferredCopy),
ambiguityPolicy: ambiguityPolicy,
);
}