@@ -698,41 +698,6 @@ namespace tivars::TypeHandlers
698698 return false ;
699699 }
700700
701- static std::set<std::string> get_detok_alias_candidates (uint16_t bytesKey, uint8_t langIdx, const std::string& primaryDisplay)
702- {
703- using TH_Tokenized::LANG_EN;
704-
705- const auto it = tokens_BytesToNames.find (bytesKey);
706- if (it == tokens_BytesToNames.end ())
707- {
708- return {};
709- }
710-
711- const TokenNames& tokenNames = it->second ;
712- std::set<std::string> candidates;
713- auto append_aliases = [&](const auto & aliases, uint8_t idx)
714- {
715- for (const auto & candidate : aliases[idx])
716- {
717- if (candidate != primaryDisplay)
718- {
719- candidates.insert (candidate);
720- }
721- }
722- };
723-
724- append_aliases (tokenNames.accessibles , langIdx);
725- append_aliases (tokenNames.variants , langIdx);
726-
727- if (langIdx != LANG_EN)
728- {
729- append_aliases (tokenNames.accessibles , LANG_EN);
730- append_aliases (tokenNames.variants , LANG_EN);
731- }
732-
733- return candidates;
734- }
735-
736701 static std::string get_detok_primary_string (uint16_t bytesKey, uint8_t langIdx, const options_t & options)
737702 {
738703 using TH_Tokenized::LANG_EN;
@@ -1050,8 +1015,10 @@ namespace tivars::TypeHandlers
10501015 currentRawBytes.push_back (nextToken);
10511016 }
10521017
1053- if (tokens_BytesToNames.contains (bytesKey))
1018+ const auto tokenNamesIt = tokens_BytesToNames.find (bytesKey);
1019+ if (tokenNamesIt != tokens_BytesToNames.end ())
10541020 {
1021+ const TokenNames& tokenNames = tokenNamesIt->second ;
10551022 const std::string tokStr = get_detok_primary_string (bytesKey, langIdx, options);
10561023 if (prettify || accessibleDetok)
10571024 {
@@ -1069,15 +1036,23 @@ namespace tivars::TypeHandlers
10691036 {
10701037 bool acceptedFallback = false ;
10711038
1072- for (const auto & aliasCandidate : get_detok_alias_candidates (bytesKey, langIdx, tokStr) )
1039+ auto try_aliases = [&] (const auto & aliases, uint8_t idx )
10731040 {
1074- if ( validate_detok_token ( aliasCandidate, currentRawBytes) )
1041+ for ( const auto & aliasCandidate : aliases[idx] )
10751042 {
1076- accept_detok_token (aliasCandidate, currentRawBytes);
1077- acceptedFallback = true ;
1078- break ;
1043+ if (aliasCandidate != tokStr && validate_detok_token (aliasCandidate, currentRawBytes))
1044+ {
1045+ accept_detok_token (aliasCandidate, currentRawBytes);
1046+ acceptedFallback = true ;
1047+ return ;
1048+ }
10791049 }
1080- }
1050+ };
1051+
1052+ try_aliases (tokenNames.variants , langIdx);
1053+ if (!acceptedFallback) try_aliases (tokenNames.accessibles , langIdx);
1054+ if (!acceptedFallback && langIdx != LANG_EN) try_aliases (tokenNames.variants , LANG_EN);
1055+ if (!acceptedFallback && langIdx != LANG_EN) try_aliases (tokenNames.accessibles , LANG_EN);
10811056
10821057 const std::string escapedToken = " \\ " + tokStr;
10831058 if (!acceptedFallback && validate_detok_token (escapedToken, currentRawBytes))
0 commit comments