pike.git / lib / modules / Search.pmod / Grammar.pmod / DefaultParser.pike

version» Context lines:

pike.git/lib/modules/Search.pmod/Grammar.pmod/DefaultParser.pike:1:   // This file is part of Roxen Search   // Copyright © 2001 Roxen IS. All rights reserved.   // - // $Id: DefaultParser.pike,v 1.12 2008/06/24 15:04:49 wellhard Exp $ + // $Id: DefaultParser.pike,v 1.13 2008/06/25 09:45:41 wellhard Exp $      static inherit .AbstractParser;   static inherit .Lexer;   import ".";      #include "debug.h"      // =========================================================================   // GRAMMAR FOR IMPLICIT AND/OR   // =========================================================================
pike.git/lib/modules/Search.pmod/Grammar.pmod/DefaultParser.pike:326:    string text = peek()[1];    advance();    string star = "86196759014593256";    string questionmark = "76196758925470133";    text=replace(text,({"*","?"}), ({star, questionmark}));    array(string) words = Unicode.split_words_and_normalize(text);    for(int i=0; i<sizeof(words); i++)    words[i]=replace(words[i], ({star, questionmark}), ({"*","?"}));    // End of abominable kludge    if (words) { +  // If search phrase, remove empty globs. This might promote to +  // ordinary search word that do support remining globs. +  if (sizeof(words) > 1) +  words = filter(words, lambda(string w) { return (w - "*" - "?") == "" ? 0 : 1; }); +     if (sizeof(words) == 1)    switch (prefix) {    case '+': node->plusWords += words; break;    case '-': node->minusWords += words; break;    default: node->words += words; break;    }    else if (sizeof(words) > 1) {    // No use of globs at this point so remove them    words = map(words, lambda(string w) { return w - "*" - "?"; } );    switch (prefix) {