Cleanup: cross-reference right pointing arrow literal
This value is defined in the UI module, but happens to be used in string_search.cc too. Note that these references need to be kept in sync. Use escaped utf-8 sequence since the literal can be avoided. Also replace BLI_str_utf8_as_unicode calls with constant assignments as these values are known there is no need to decode a utf-8 sequence.
This commit is contained in:
parent
1411118055
commit
6ce383a9df
|
@ -24,6 +24,10 @@
|
|||
#include "BLI_string_utf8.h"
|
||||
#include "BLI_timeit.hh"
|
||||
|
||||
/* Right arrow, keep in sync with #UI_MENU_ARROW_SEP in `UI_interface.h`. */
|
||||
#define UI_MENU_ARROW_SEP "\xe2\x96\xb6"
|
||||
#define UI_MENU_ARROW_SEP_UNICODE 0x25b6
|
||||
|
||||
namespace blender::string_search {
|
||||
|
||||
static int64_t count_utf8_code_points(StringRef str)
|
||||
|
@ -350,8 +354,11 @@ void extract_normalized_words(StringRef str,
|
|||
LinearAllocator<> &allocator,
|
||||
Vector<StringRef, 64> &r_words)
|
||||
{
|
||||
const uint32_t unicode_space = BLI_str_utf8_as_unicode(" ");
|
||||
const uint32_t unicode_right_triangle = BLI_str_utf8_as_unicode("▶");
|
||||
const uint32_t unicode_space = (uint32_t)' ';
|
||||
const uint32_t unicode_right_triangle = UI_MENU_ARROW_SEP_UNICODE;
|
||||
|
||||
BLI_assert(unicode_space == BLI_str_utf8_as_unicode(" "));
|
||||
BLI_assert(unicode_right_triangle == BLI_str_utf8_as_unicode(UI_MENU_ARROW_SEP));
|
||||
|
||||
auto is_separator = [&](uint32_t unicode) {
|
||||
return ELEM(unicode, unicode_space, unicode_right_triangle);
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
|
||||
namespace blender::string_search::tests {
|
||||
|
||||
/* Right arrow, keep in sync with #UI_MENU_ARROW_SEP in `UI_interface.h`. */
|
||||
#define UI_MENU_ARROW_SEP "\xe2\x96\xb6"
|
||||
|
||||
TEST(string_search, damerau_levenshtein_distance)
|
||||
{
|
||||
EXPECT_EQ(damerau_levenshtein_distance("test", "test"), 0);
|
||||
|
@ -30,14 +33,17 @@ TEST(string_search, get_fuzzy_match_errors)
|
|||
EXPECT_EQ(get_fuzzy_match_errors("", "abc"), 0);
|
||||
EXPECT_EQ(get_fuzzy_match_errors("hello", "hallo"), 1);
|
||||
EXPECT_EQ(get_fuzzy_match_errors("hap", "hello"), -1);
|
||||
EXPECT_EQ(get_fuzzy_match_errors("armature", "▶restore"), -1);
|
||||
EXPECT_EQ(get_fuzzy_match_errors("armature", UI_MENU_ARROW_SEP "restore"), -1);
|
||||
}
|
||||
|
||||
TEST(string_search, extract_normalized_words)
|
||||
{
|
||||
LinearAllocator<> allocator;
|
||||
Vector<StringRef, 64> words;
|
||||
extract_normalized_words("hello world▶test another test▶ 3", allocator, words);
|
||||
extract_normalized_words("hello world" UI_MENU_ARROW_SEP "test another test" UI_MENU_ARROW_SEP
|
||||
" 3",
|
||||
allocator,
|
||||
words);
|
||||
EXPECT_EQ(words.size(), 6);
|
||||
EXPECT_EQ(words[0], "hello");
|
||||
EXPECT_EQ(words[1], "world");
|
||||
|
|
|
@ -96,8 +96,9 @@ typedef struct uiTreeViewItemHandle uiTreeViewItemHandle;
|
|||
#define UI_SEP_CHAR '|'
|
||||
#define UI_SEP_CHAR_S "|"
|
||||
|
||||
/* Separator for text in search menus. */
|
||||
#define UI_MENU_ARROW_SEP "▶"
|
||||
/* Separator for text in search menus (right pointing arrow).
|
||||
* keep in sync with `string_search.cc`. */
|
||||
#define UI_MENU_ARROW_SEP "\xe2\x96\xb6"
|
||||
|
||||
/* names */
|
||||
#define UI_MAX_DRAW_STR 400
|
||||
|
|
Loading…
Reference in New Issue