[Groonga-commit] groonga/gcs [master] bq: support label operator for q

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Aug 14 18:55:04 JST 2012


Kouhei Sutou	2012-08-14 18:55:04 +0900 (Tue, 14 Aug 2012)

  New Revision: a62050f90830d8de044eed3109f408fb520c1672
  https://github.com/groonga/gcs/commit/a62050f90830d8de044eed3109f408fb520c1672

  Log:
    bq: support label operator for q

  Modified files:
    lib/bq-translator.js
    test/bq-translator.test.js

  Modified: lib/bq-translator.js (+9 -0)
===================================================================
--- lib/bq-translator.js    2012-08-14 18:53:45 +0900 (d8f92cc)
+++ lib/bq-translator.js    2012-08-14 18:55:04 +0900 (02d9e79)
@@ -72,6 +72,15 @@ BooleanQueryTranslator.prototype = {
         this.skipSpaces();
         var expression;
         switch (operator) {
+        case "label":
+          expression = this.translateExpression();
+          this.skipSpaces();
+          if (this.query[this.offset] != ")") {
+            this.throwTranslateError("close parenthesis is missing: " +
+                                     "operator:<label>");
+          }
+          this.offset++;
+          break;
         case "field":
           expression = this.translateGroupField();
           break;

  Modified: test/bq-translator.test.js (+9 -0)
===================================================================
--- test/bq-translator.test.js    2012-08-14 18:53:45 +0900 (806671a)
+++ test/bq-translator.test.js    2012-08-14 18:55:04 +0900 (9b4b5fd)
@@ -161,11 +161,20 @@ suite('BoolanQueryTranslator', function() {
             "(and 'keyword1 keyword2' type:'ModelName')",
             '(field @ "keyword1" && field @ "keyword2" && type @ "ModelName")');
 
+  testQuery("label",
+            "(label 'keyword1 keyword2')",
+            'field @ "keyword1" && field @ "keyword2"');
+
   testQueryError("garbage",
                  "(and 'keyword' type:'ModelName') garbage1 garbage2",
                  "(and 'keyword' type:'ModelName')| |garbage1 garbage2",
                  "garbages exist after valid boolean query");
 
+  testQueryError("label: missing close parentheis",
+                 "(label 'keyword1 keyword2'",
+                 "(label 'keyword1 keyword2'||",
+                 "close parenthesis is missing: operator:<label>");
+
   testGroup("field",
             "(field field1 'keyword1') (other group)",
             "(field field1 'keyword1')".length,
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index