void processTExtensions()

in lib/src/locale/locale_parser.dart [216:259]


  void processTExtensions() {
    if (_tExtensions != null) {
      problems.add('duplicate "t"');
      return;
    }
    _tExtensions = <String, String>{};
    var empty = true;
    final tlang = <String>[];
    if (acceptLanguage()) {
      empty = false;
      tlang.add(replaceDeprecatedLanguageSubtag(_accepted));
      if (acceptScript()) {
        tlang.add(_accepted);
      }
      if (acceptRegion()) {
        tlang.add(replaceDeprecatedRegionSubtag(_accepted.toUpperCase())
            .toLowerCase());
      }
      acceptVariants();
      tlang.addAll(_acceptedList!);
      _tExtensions![''] = tlang.join('-');
    }
    // transformed_extensions: collect "(sep tfield)*".
    while (acceptTExtensionKey()) {
      var tkey = _accepted;
      final tvalueParts = <String>[];
      while (acceptLowAlphaNumeric3to8()) {
        tvalueParts.add(_accepted);
      }
      if (tvalueParts.isNotEmpty) {
        empty = false;
        if (!_tExtensions!.containsKey(tkey)) {
          _tExtensions![tkey] = tvalueParts.join('-');
        } else {
          problems.add('duplicate "$tkey"');
        }
      } else {
        problems.add('empty "$tkey"');
      }
    }
    if (empty) {
      problems.add('empty "t"');
    }
  }