variantSigns function

List<String> variantSigns(
  1. dynamic charVariants, {
  2. List<String>? variants,
})

Resolves the list of FSW sign variants for a character entry.

An entry is either a list of signs, or a map with a default list and a variations map; the first requested variants key that exists wins, otherwise the default is returned.

Implementation

List<String> variantSigns(dynamic charVariants, {List<String>? variants}) {
  if (charVariants is Map) {
    final variations = charVariants['variations'] as Map;
    for (final variation in variants ?? const <String>[]) {
      if (variations.containsKey(variation)) {
        return List<String>.from(variations[variation] as List);
      }
    }
    return List<String>.from(charVariants['default'] as List);
  }
  return List<String>.from(charVariants as List);
}