forked from GitHub/gf-core
fix to show all prefixes in lookupCohorts
This commit is contained in:
@@ -229,7 +229,7 @@ int sequence_cmp(ref<PgfSequence> seq1, ref<PgfSequence> seq2)
|
|||||||
|
|
||||||
static
|
static
|
||||||
int text_range_cmp(PgfTextRange *range, ref<PgfSequence> seq,
|
int text_range_cmp(PgfTextRange *range, ref<PgfSequence> seq,
|
||||||
bool case_sensitive)
|
bool case_sensitive, bool full_match)
|
||||||
{
|
{
|
||||||
int res1 = 0;
|
int res1 = 0;
|
||||||
|
|
||||||
@@ -246,13 +246,13 @@ int text_range_cmp(PgfTextRange *range, ref<PgfSequence> seq,
|
|||||||
return case_sensitive ? res1 : 0;
|
return case_sensitive ? res1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (s2 >= e2 && i >= seq->syms.len)
|
||||||
|
return full_match ? 1 : 0;
|
||||||
|
|
||||||
uint32_t ucs1 = pgf_utf8_decode(&range->begin); range->pos++;
|
uint32_t ucs1 = pgf_utf8_decode(&range->begin); range->pos++;
|
||||||
uint32_t ucs1i = pgf_utf8_to_upper(ucs1);
|
uint32_t ucs1i = pgf_utf8_to_upper(ucs1);
|
||||||
|
|
||||||
if (s2 >= e2) {
|
if (s2 >= e2) {
|
||||||
if (i >= seq->syms.len)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
if (s2 != NULL) {
|
if (s2 != NULL) {
|
||||||
if (pgf_utf8_is_space(ucs1)) {
|
if (pgf_utf8_is_space(ucs1)) {
|
||||||
count++;
|
count++;
|
||||||
@@ -475,7 +475,7 @@ void phrasetable_lookup(PgfPhrasetable table,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
PgfTextRange current = *sentence;
|
PgfTextRange current = *sentence;
|
||||||
int cmp = text_range_cmp(¤t,table->value.seq,case_sensitive);
|
int cmp = text_range_cmp(¤t,table->value.seq,case_sensitive,true);
|
||||||
if (cmp < 0) {
|
if (cmp < 0) {
|
||||||
phrasetable_lookup(table->left,sentence,case_sensitive,lincats,callback,err);
|
phrasetable_lookup(table->left,sentence,case_sensitive,lincats,callback,err);
|
||||||
} else if (cmp > 0) {
|
} else if (cmp > 0) {
|
||||||
@@ -531,7 +531,7 @@ void phrasetable_lookup_prefixes(PgfPhrasetable table,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
PgfTextRange current = *sentence;
|
PgfTextRange current = *sentence;
|
||||||
int cmp = text_range_cmp(¤t,table->value.seq,case_sensitive);
|
int cmp = text_range_cmp(¤t,table->value.seq,case_sensitive,false);
|
||||||
if (cmp < 0) {
|
if (cmp < 0) {
|
||||||
phrasetable_lookup_prefixes(table->left,sentence,case_sensitive,lincats,min,max,callback,err);
|
phrasetable_lookup_prefixes(table->left,sentence,case_sensitive,lincats,min,max,callback,err);
|
||||||
} else if (cmp > 0) {
|
} else if (cmp > 0) {
|
||||||
@@ -549,7 +549,7 @@ void phrasetable_lookup_prefixes(PgfPhrasetable table,
|
|||||||
phrasetable_lookup_prefixes(table->left,sentence,case_sensitive,lincats,min,len,callback,err);
|
phrasetable_lookup_prefixes(table->left,sentence,case_sensitive,lincats,min,len,callback,err);
|
||||||
|
|
||||||
auto backrefs = table->value.backrefs;
|
auto backrefs = table->value.backrefs;
|
||||||
if (backrefs != 0) {
|
if (len > 0 && backrefs != 0) {
|
||||||
for (size_t i = 0; i < backrefs->len; i++) {
|
for (size_t i = 0; i < backrefs->len; i++) {
|
||||||
PgfSequenceBackref backref = *vector_elem<PgfSequenceBackref>(backrefs,i);
|
PgfSequenceBackref backref = *vector_elem<PgfSequenceBackref>(backrefs,i);
|
||||||
switch (ref<PgfConcrLin>::get_tag(backref.container)) {
|
switch (ref<PgfConcrLin>::get_tag(backref.container)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user