From: Adam Dickmeiss Date: Sat, 6 Jun 2015 12:12:30 +0000 (+0200) Subject: CCL: split-list deals with use attr YAZ-844 X-Git-Tag: v5.14.0~7 X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=commitdiff_plain;h=1a219938c1325105582cdbc2c9a34b6fc3cdf191 CCL: split-list deals with use attr YAZ-844 --- diff --git a/client/default.bib b/client/default.bib index faf44c4..c66e795 100644 --- a/client/default.bib +++ b/client/default.bib @@ -1,7 +1,7 @@ # CCL field mappings # # The rule below is used when no fields are specified -term t=l,r s=al +term t=l,r s=sl u=1016 # # Simple rule for a field called "clean" clean t=l,r diff --git a/src/cclfind.c b/src/cclfind.c index beec793..2c8c9fa 100644 --- a/src/cclfind.c +++ b/src/cclfind.c @@ -439,7 +439,7 @@ static struct ccl_rpn_node *ccl_term_one_use(CCL_parser cclp, { struct ccl_rpn_attr *attr; for (attr = ccl_qual_get_attr(qa[i]); attr; attr = attr->next) - if (attr->type != 1 || attr == attr_use) + if (attr->type != 1 || !attr_use || attr == attr_use) { switch (attr->kind) { diff --git a/test/test_ccl.c b/test/test_ccl.c index 853a05a..e614a5b 100644 --- a/test/test_ccl.c +++ b/test/test_ccl.c @@ -87,7 +87,7 @@ void tst1(int pass) ccl_qual_fitem(bibset, "r=o", "x"); ccl_qual_fitem(bibset, "dc.title", "title"); ccl_qual_fitem(bibset, "s=ag", "ag"); - ccl_qual_fitem(bibset, "s=sl", "splitlist"); + ccl_qual_fitem(bibset, "s=sl u=2", "splitlist"); break; case 1: strcpy(tstline, "ti u=4 s=pw t=l,r"); @@ -120,7 +120,7 @@ void tst1(int pass) strcpy(tstline, "ag s=ag"); ccl_qual_line(bibset, tstline); - strcpy(tstline, "splitlist s=sl"); + strcpy(tstline, "splitlist s=sl u=2"); ccl_qual_line(bibset, tstline); break; case 2: @@ -135,7 +135,7 @@ void tst1(int pass) "title dc.title\n" "comb term dc.title\n" "ag s=ag\n" - "splitlist s=sl\n" + "splitlist s=sl u=2\n" ); break; case 3: @@ -184,6 +184,7 @@ void tst1(int pass) " \n" " \n" " \n" + " \n" " \n" "\n"; @@ -437,14 +438,14 @@ void tst1(int pass) YAZ_CHECK(tst_ccl_query(bibset, "ag=\"a b c\" \"d e\"", "@and @attr 4=1 \"a b c\" @attr 4=1 \"d e\" ")); - YAZ_CHECK(tst_ccl_query(bibset, "splitlist=a", "a ")); + YAZ_CHECK(tst_ccl_query(bibset, "splitlist=a", "@attr 1=2 a ")); YAZ_CHECK(tst_ccl_query(bibset, "splitlist=a b", "@or " - "@and a b \"a b\" ")); + "@and @attr 1=2 a @attr 1=2 b @attr 1=2 \"a b\" ")); YAZ_CHECK(tst_ccl_query(bibset, "splitlist=a b c", "@or @or @or " - "@and @and a b c " - "@and a \"b c\" " - "@and \"a b\" c " - "\"a b c\" ")); + "@and @and @attr 1=2 a @attr 1=2 b @attr 1=2 c " + "@and @attr 1=2 a @attr 1=2 \"b c\" " + "@and @attr 1=2 \"a b\" @attr 1=2 c " + "@attr 1=2 \"a b c\" ")); ccl_qual_rm(&bibset); } diff --git a/util/bib1 b/util/bib1 index 0de6ab8..182ee4c 100644 --- a/util/bib1 +++ b/util/bib1 @@ -5,4 +5,4 @@ date 1=31 r=r,omiteq x 1=x r=o title dc.title comb term dc.title -splitlist s=sl,pw +splitlist s=sl,pw u=1016