in components/search/src/environment_matching.rs [50:92]
fn matches_region_and_locale(
user_region: &str,
user_locale: &str,
environment: &JSONVariantEnvironment,
) -> bool {
if does_array_include(&environment.excluded_regions, user_region)
|| does_array_include(&environment.excluded_locales, user_locale)
{
return false;
}
// This is a special case, if all_regions_and_locales is false (default value)
// and region and locales are not set, then we assume that for the purposes of
// matching region & locale, we do match everywhere. This allows us to specify
// none of these options but match against other items such as distribution or
// application name.
if !environment.all_regions_and_locales
&& environment.regions.is_empty()
&& environment.locales.is_empty()
{
return true;
}
if does_array_include(&environment.regions, user_region)
&& does_array_include(&environment.locales, user_locale)
{
return true;
}
if environment.regions.is_empty() && does_array_include(&environment.locales, user_locale) {
return true;
}
if environment.locales.is_empty() && does_array_include(&environment.regions, user_region) {
return true;
}
if environment.all_regions_and_locales {
return true;
}
false
}