mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-25 17:10:23 +00:00
LibUnicode+LibWeb: Move should_continue_beyond_word helper in Segmenter
This commit is contained in:
parent
fb23fd328b
commit
46db0febf7
Notes:
github-actions[bot]
2024-10-31 19:05:03 +00:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/LadybirdBrowser/ladybird/commit/46db0febf73 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2091 Reviewed-by: https://github.com/trflynn89 ✅
4 changed files with 16 additions and 24 deletions
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include <AK/Utf16View.h>
|
||||
#include <AK/Utf32View.h>
|
||||
#include <LibUnicode/CharacterTypes.h>
|
||||
#include <LibUnicode/ICU.h>
|
||||
#include <LibUnicode/Locale.h>
|
||||
#include <LibUnicode/Segmenter.h>
|
||||
|
@ -235,4 +236,13 @@ NonnullOwnPtr<Segmenter> Segmenter::create(StringView locale, SegmenterGranulari
|
|||
return make<SegmenterImpl>(segmenter.release_nonnull(), segmenter_granularity);
|
||||
}
|
||||
|
||||
bool Segmenter::should_continue_beyond_word(Utf8View const& word)
|
||||
{
|
||||
for (auto code_point : word) {
|
||||
if (!code_point_has_punctuation_general_category(code_point) && !code_point_has_separator_general_category(code_point))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,6 +27,8 @@ public:
|
|||
static NonnullOwnPtr<Segmenter> create(StringView locale, SegmenterGranularity segmenter_granularity);
|
||||
virtual ~Segmenter() = default;
|
||||
|
||||
static bool should_continue_beyond_word(Utf8View const&);
|
||||
|
||||
SegmenterGranularity segmenter_granularity() const { return m_segmenter_granularity; }
|
||||
|
||||
virtual NonnullOwnPtr<Segmenter> clone() const = 0;
|
||||
|
|
|
@ -166,16 +166,6 @@ void EditingHostManager::decrement_cursor_position_offset(CollapseSelection coll
|
|||
}
|
||||
}
|
||||
|
||||
static bool should_continue_beyond_word(Utf8View const& word)
|
||||
{
|
||||
for (auto code_point : word) {
|
||||
if (!Unicode::code_point_has_punctuation_general_category(code_point) && !Unicode::code_point_has_separator_general_category(code_point))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void EditingHostManager::increment_cursor_position_to_next_word(CollapseSelection collapse)
|
||||
{
|
||||
auto selection = m_document->get_selection();
|
||||
|
@ -200,7 +190,7 @@ void EditingHostManager::increment_cursor_position_to_next_word(CollapseSelectio
|
|||
} else {
|
||||
MUST(selection->set_base_and_extent(*node, selection->anchor_offset(), *node, *offset));
|
||||
}
|
||||
if (should_continue_beyond_word(word))
|
||||
if (Unicode::Segmenter::should_continue_beyond_word(word))
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
@ -227,7 +217,7 @@ void EditingHostManager::decrement_cursor_position_to_previous_word(CollapseSele
|
|||
} else {
|
||||
MUST(selection->set_base_and_extent(*node, selection->anchor_offset(), *node, *offset));
|
||||
}
|
||||
if (should_continue_beyond_word(word))
|
||||
if (Unicode::Segmenter::should_continue_beyond_word(word))
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -757,16 +757,6 @@ void FormAssociatedTextControlElement::decrement_cursor_position_offset(Collapse
|
|||
selection_was_changed();
|
||||
}
|
||||
|
||||
static bool should_continue_beyond_word(Utf8View const& word)
|
||||
{
|
||||
for (auto code_point : word) {
|
||||
if (!Unicode::code_point_has_punctuation_general_category(code_point) && !Unicode::code_point_has_separator_general_category(code_point))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void FormAssociatedTextControlElement::increment_cursor_position_to_next_word(CollapseSelection collapse)
|
||||
{
|
||||
auto const text_node = form_associated_element_to_text_node();
|
||||
|
@ -781,7 +771,7 @@ void FormAssociatedTextControlElement::increment_cursor_position_to_next_word(Co
|
|||
} else {
|
||||
m_selection_end = *offset;
|
||||
}
|
||||
if (should_continue_beyond_word(word))
|
||||
if (Unicode::Segmenter::should_continue_beyond_word(word))
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
@ -804,7 +794,7 @@ void FormAssociatedTextControlElement::decrement_cursor_position_to_previous_wor
|
|||
} else {
|
||||
m_selection_end = *offset;
|
||||
}
|
||||
if (should_continue_beyond_word(word))
|
||||
if (Unicode::Segmenter::should_continue_beyond_word(word))
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue