* Europagate, 1995
*
* $Log: cclfind.c,v $
- * Revision 1.21 2001-02-21 13:46:53 adam
+ * Revision 1.24 2001-03-22 21:23:30 adam
+ * Directive s=pw sets structure to phrase if term includes blank(s).
+ *
+ * Revision 1.23 2001/03/20 11:22:58 adam
+ * CCL Truncation character may be defined.
+ *
+ * Revision 1.22 2001/03/07 13:24:40 adam
+ * Member and_not in Z_Operator is kept for backwards compatibility.
+ * Added support for definition of CCL operators in field spec file.
+ *
+ * Revision 1.21 2001/02/21 13:46:53 adam
* C++ fixes.
*
* Revision 1.20 2000/11/16 13:03:12 adam
int and_list = 0;
int or_list = 0;
char *attset;
+ const char *truncation_aliases;
+
+ truncation_aliases =
+ ccl_qual_search_special(cclp->bibset, "truncation");
+ if (!truncation_aliases)
+ truncation_aliases = "?";
if (!qa)
{
{
struct ccl_rpn_node *p;
size_t no, i;
+ int no_spaces = 0;
int left_trunc = 0;
int right_trunc = 0;
int mid_trunc = 0;
for (no = 0; no < max && is_term_ok(lookahead->kind, term_list); no++)
{
for (i = 0; i<lookahead->len; i++)
- if (truncation_value == -1 && lookahead->name[i] == '?')
+ if (lookahead->name[i] == ' ')
+ no_spaces++;
+ else if (strchr(truncation_aliases, lookahead->name[i]))
{
if (no == 0 && i == 0 && lookahead->len >= 1)
left_trunc = 1;
qual_val_type (qa, CCL_BIB1_STR, CCL_BIB1_STR_WP, &attset))
{ /* no structure attribute met. Apply either structure attribute
WORD or PHRASE depending on number of CCL tokens */
- if (no == 1)
+ if (no == 1 && no_spaces == 0)
add_attr (p, attset, CCL_BIB1_STR, 2);
else
add_attr (p, attset, CCL_BIB1_STR, 1);
{
struct ccl_rpn_node *p;
+
+
cclp->look_token = list;
p = find_spec (cclp, NULL);
if (p && KIND != CCL_TOK_EOL)