mirror of
https://github.com/yhirose/cpp-peglib.git
synced 2024-12-22 11:55:30 +00:00
Fix #294
This commit is contained in:
parent
9f06da7aa6
commit
f61052359c
11
peglib.h
11
peglib.h
@ -381,9 +381,9 @@ public:
|
|||||||
: ignore_case_(ignore_case) {
|
: ignore_case_(ignore_case) {
|
||||||
size_t id = 0;
|
size_t id = 0;
|
||||||
for (const auto &item : items) {
|
for (const auto &item : items) {
|
||||||
|
const auto &s = ignore_case ? to_lower(item) : item;
|
||||||
for (size_t len = 1; len <= item.size(); len++) {
|
for (size_t len = 1; len <= item.size(); len++) {
|
||||||
auto last = len == item.size();
|
auto last = len == item.size();
|
||||||
const auto &s = ignore_case ? to_lower(item) : item;
|
|
||||||
std::string_view sv(s.data(), len);
|
std::string_view sv(s.data(), len);
|
||||||
auto it = dic_.find(sv);
|
auto it = dic_.find(sv);
|
||||||
if (it == dic_.end()) {
|
if (it == dic_.end()) {
|
||||||
@ -399,12 +399,17 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t match(const char *text, size_t text_len, size_t &id) const {
|
size_t match(const char *text, size_t text_len, size_t &id) const {
|
||||||
|
std::string lower_text;
|
||||||
|
if (ignore_case_) {
|
||||||
|
lower_text = to_lower(text);
|
||||||
|
text = lower_text.data();
|
||||||
|
}
|
||||||
|
|
||||||
size_t match_len = 0;
|
size_t match_len = 0;
|
||||||
auto done = false;
|
auto done = false;
|
||||||
size_t len = 1;
|
size_t len = 1;
|
||||||
while (!done && len <= text_len) {
|
while (!done && len <= text_len) {
|
||||||
const auto &s = ignore_case_ ? to_lower(text) : std::string(text);
|
std::string_view sv(text, len);
|
||||||
std::string_view sv(s.data(), len);
|
|
||||||
auto it = dic_.find(sv);
|
auto it = dic_.find(sv);
|
||||||
if (it == dic_.end()) {
|
if (it == dic_.end()) {
|
||||||
done = true;
|
done = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user