Extensions: use str.casefold for case insensitive search
`str.casefold` is intended for case insensitive string matching and finds more matches with some unicode characters.
This commit is contained in:
@@ -253,15 +253,15 @@ def lock_result_any_failed_with_report(op, lock_result, report_type='ERROR'):
|
||||
return any_errors
|
||||
|
||||
|
||||
def pkg_info_check_exclude_filter_ex(name, tagline, search_lower):
|
||||
def pkg_info_check_exclude_filter_ex(name, tagline, search_casefold):
|
||||
return (
|
||||
(search_lower in name.lower() or search_lower in iface_(name).lower()) or
|
||||
(search_lower in tagline.lower() or search_lower in iface_(tagline).lower())
|
||||
(search_casefold in name.casefold() or search_casefold in iface_(name).casefold()) or
|
||||
(search_casefold in tagline.casefold() or search_casefold in iface_(tagline).casefold())
|
||||
)
|
||||
|
||||
|
||||
def pkg_info_check_exclude_filter(item, search_lower):
|
||||
return pkg_info_check_exclude_filter_ex(item.name, item.tagline, search_lower)
|
||||
def pkg_info_check_exclude_filter(item, search_casefold):
|
||||
return pkg_info_check_exclude_filter_ex(item.name, item.tagline, search_casefold)
|
||||
|
||||
|
||||
def extension_theme_enable_filepath(filepath):
|
||||
@@ -667,7 +667,7 @@ def _extensions_repo_from_directory_and_report(directory, report_fn):
|
||||
def _pkg_marked_by_repo(pkg_manifest_all):
|
||||
# NOTE: pkg_manifest_all can be from local or remote source.
|
||||
wm = bpy.context.window_manager
|
||||
search_lower = wm.extension_search.lower()
|
||||
search_casefold = wm.extension_search.casefold()
|
||||
filter_by_type = blender_filter_by_type_map[wm.extension_type]
|
||||
|
||||
repo_pkg_map = {}
|
||||
@@ -683,7 +683,7 @@ def _pkg_marked_by_repo(pkg_manifest_all):
|
||||
continue
|
||||
if filter_by_type and (filter_by_type != item.type):
|
||||
continue
|
||||
if search_lower and not pkg_info_check_exclude_filter(item, search_lower):
|
||||
if search_casefold and not pkg_info_check_exclude_filter(item, search_casefold):
|
||||
continue
|
||||
|
||||
pkg_list = repo_pkg_map.get(repo_index)
|
||||
|
||||
@@ -363,7 +363,7 @@ def addons_panel_draw_items(
|
||||
*,
|
||||
addon_modules, # `Dict[str, ModuleType]`
|
||||
used_addon_module_name_map, # `Dict[str, bpy.types.Addon]`
|
||||
search_lower, # `str`
|
||||
search_casefold, # `str`
|
||||
addon_tags_exclude, # `Set[str]`
|
||||
enabled_only, # `bool`
|
||||
addon_extension_manifest_map, # `Dict[str, PkgManifest_Normalized]`
|
||||
@@ -415,11 +415,11 @@ def addons_panel_draw_items(
|
||||
item_tracker_url = bl_info.get("tracker_url")
|
||||
del bl_info
|
||||
|
||||
if search_lower and (
|
||||
if search_casefold and (
|
||||
not pkg_info_check_exclude_filter_ex(
|
||||
item_name,
|
||||
item_description,
|
||||
search_lower,
|
||||
search_casefold,
|
||||
)
|
||||
):
|
||||
continue
|
||||
@@ -490,7 +490,7 @@ def addons_panel_draw_items(
|
||||
def addons_panel_draw_impl(
|
||||
self,
|
||||
context, # `bpy.types.Context`
|
||||
search_lower, # `str`
|
||||
search_casefold, # `str`
|
||||
addon_tags_exclude, # `Set[str]`
|
||||
enabled_only, # `bool`
|
||||
):
|
||||
@@ -553,7 +553,7 @@ def addons_panel_draw_impl(
|
||||
context,
|
||||
addon_modules=addon_modules,
|
||||
used_addon_module_name_map=used_addon_module_name_map,
|
||||
search_lower=search_lower,
|
||||
search_casefold=search_casefold,
|
||||
addon_tags_exclude=addon_tags_exclude,
|
||||
enabled_only=enabled_only,
|
||||
addon_extension_manifest_map=addon_extension_manifest_map,
|
||||
@@ -630,7 +630,7 @@ def addons_panel_draw(panel, context):
|
||||
addons_panel_draw_impl(
|
||||
panel,
|
||||
context,
|
||||
wm.addon_search.lower(),
|
||||
wm.addon_search.casefold(),
|
||||
addon_tags_exclude,
|
||||
view.show_addons_enabled_only,
|
||||
)
|
||||
@@ -787,7 +787,7 @@ def extensions_map_from_legacy_addons_reverse_lookup(pkg_id):
|
||||
def extensions_panel_draw_impl(
|
||||
self,
|
||||
context, # `bpy.types.Context`
|
||||
search_lower, # `str`
|
||||
search_casefold, # `str`
|
||||
filter_by_type, # `str`
|
||||
extension_tags_exclude, # `Set[str]`
|
||||
enabled_only, # `bool`
|
||||
@@ -916,7 +916,7 @@ def extensions_panel_draw_impl(
|
||||
item = item_local or item_remote
|
||||
if filter_by_type and (filter_by_type != item.type):
|
||||
continue
|
||||
if search_lower and (not pkg_info_check_exclude_filter(item, search_lower)):
|
||||
if search_casefold and (not pkg_info_check_exclude_filter(item, search_casefold)):
|
||||
continue
|
||||
|
||||
is_installed = item_local is not None
|
||||
@@ -1492,7 +1492,7 @@ def extensions_panel_draw(panel, context):
|
||||
extensions_panel_draw_impl(
|
||||
panel,
|
||||
context,
|
||||
wm.extension_search.lower(),
|
||||
wm.extension_search.casefold(),
|
||||
blender_filter_by_type_map[wm.extension_type],
|
||||
extension_tags_exclude,
|
||||
wm.extension_enabled_only,
|
||||
|
||||
@@ -1710,7 +1710,7 @@ class USERPREF_UL_extension_repos(UIList):
|
||||
range(len(items)),
|
||||
key=lambda i: (
|
||||
items[i].use_remote_url is False,
|
||||
items[i].name.lower(),
|
||||
items[i].name.casefold(),
|
||||
)
|
||||
)):
|
||||
indices[orig_index] = index
|
||||
@@ -2441,7 +2441,7 @@ class USERPREF_PT_addons(AddOnPanel, Panel):
|
||||
|
||||
show_enabled_only = prefs.view.show_addons_enabled_only
|
||||
filter = wm.addon_filter
|
||||
search = wm.addon_search.lower()
|
||||
search = wm.addon_search.casefold()
|
||||
support = wm.addon_support
|
||||
|
||||
# initialized on demand
|
||||
@@ -2469,11 +2469,11 @@ class USERPREF_PT_addons(AddOnPanel, Panel):
|
||||
continue
|
||||
|
||||
if search and not (
|
||||
(search in bl_info["name"].lower() or
|
||||
search in iface_(bl_info["name"]).lower()) or
|
||||
(bl_info["author"] and (search in bl_info["author"].lower())) or
|
||||
((filter == "All") and (search in bl_info["category"].lower() or
|
||||
search in iface_(bl_info["category"]).lower()))
|
||||
(search in bl_info["name"].casefold() or
|
||||
search in iface_(bl_info["name"]).casefold()) or
|
||||
(bl_info["author"] and (search in bl_info["author"].casefold())) or
|
||||
((filter == "All") and (search in bl_info["category"].casefold() or
|
||||
search in iface_(bl_info["category"]).casefold()))
|
||||
):
|
||||
continue
|
||||
|
||||
|
||||
Reference in New Issue
Block a user