CCL: split-list deals with use attr YAZ-844
authorAdam Dickmeiss <adam@indexdata.dk>
Sat, 6 Jun 2015 12:12:30 +0000 (14:12 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Sat, 6 Jun 2015 12:12:30 +0000 (14:12 +0200)
client/default.bib
src/cclfind.c
test/test_ccl.c
util/bib1

index faf44c4..c66e795 100644 (file)
@@ -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
index beec793..2c8c9fa 100644 (file)
@@ -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)
                 {
index 853a05a..e614a5b 100644 (file)
@@ -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)
                 " </qual>\n"
                 " <qual name=\"splitlist\">\n"
                 "   <attr type=\"s\" value=\"sl\"/>\n"
+                "   <attr type=\"u\" value=\"2\"/>\n"
                 " </qual>\n"
                 "</cclmap>\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);
 }
 
index 0de6ab8..182ee4c 100644 (file)
--- 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