source: gsdl/trunk/common-src/src/lib/phrases.cpp@ 18050

Last change on this file since 18050 was 11001, checked in by kjdon, 18 years ago

moved the get_phrases function from recpt/querytools to here, so that colservr and recpt can share it

  • Property svn:keywords set to Author Date Id Revision
File size: 2.0 KB
Line 
1/**********************************************************************
2 *
3 * phrases.cpp -- routines to do with phrases - want to share between colservr
4 * and recpt
5 * Copyright (C) 1999 The New Zealand Digital Library Project
6 *
7 * A component of the Greenstone digital library software
8 * from the New Zealand Digital Library Project at the
9 * University of Waikato, New Zealand.
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 *
25 *
26 *********************************************************************/
27
28#include "phrases.h"
29#include "unitool.h" // for is_unicode_letdig
30
31
32void get_phrases (const text_t &querystring, text_tarray &phrases) {
33
34 phrases.erase (phrases.begin(), phrases.end());
35 if (!querystring.empty()) {
36
37 text_t::const_iterator end = querystring.end();
38 text_t::const_iterator here = findchar (querystring.begin(), end, '"');
39 if (here != end) {
40 text_t tmptext;
41 bool foundquote = false;
42 bool foundbreak = false;
43 while (here != end) {
44 if (*here == '"') {
45 if (foundquote) {
46 if (!tmptext.empty() && foundbreak) {
47 phrases.push_back(tmptext);
48 }
49 tmptext.clear();
50
51 foundquote = false;
52 foundbreak = false;
53 } else foundquote = true;
54 } else {
55 if (foundquote) {
56 if (!is_unicode_letdig(*here)) {
57 foundbreak = true;
58 }
59 tmptext.push_back (*here);
60 }
61 }
62 ++here;
63 }
64 }
65 }
66}
Note: See TracBrowser for help on using the repository browser.