null+****@clear*****
null+****@clear*****
2012年 7月 27日 (金) 17:09:34 JST
Kouhei Sutou 2012-07-27 17:09:34 +0900 (Fri, 27 Jul 2012) New Revision: 2aa193bd9fce9b3807d2ffaf59ccf2dc44b44ac8 https://github.com/groonga/gcs/commit/2aa193bd9fce9b3807d2ffaf59ccf2dc44b44ac8 Log: BqTranslator: use the same function for "and" and "or" Modified files: lib/bq-translator.js test/bq-translator.test.js Modified: lib/bq-translator.js (+4 -18) =================================================================== --- lib/bq-translator.js 2012-07-27 17:07:40 +0900 (3c707fe) +++ lib/bq-translator.js 2012-07-27 17:09:34 +0900 (9a69fa9) @@ -41,10 +41,10 @@ BooleanQueryTranslator.prototype = { var expression; switch (operator) { case "and": - expression = this.translateGroupAnd(query, context); + expression = this.translateGroupSetOperation(query, context, "&&"); break; case "or": - expression = this.translateGroupOr(query, context); + expression = this.translateGroupSetOperation(query, context, "||"); break; default: // TODO: report error: unknown operator @@ -70,26 +70,12 @@ BooleanQueryTranslator.prototype = { // TODO: report error: missing close paren <)> return ""; }, - translateGroupAnd: function(query, context) { + translateGroupSetOperation: function(query, context, setOperator) { var expressions = []; while (context.offset < query.length) { this.skipSpaces(query, context); if (query[context.offset] == ")") { - return expressions.join(" && "); - } else { - expressions.push(this.translateExpression(query, context)); - } - } - - // TODO: report error: missing close paren <)> - return ""; - }, - translateGroupOr: function(query, context) { - var expressions = []; - while (context.offset < query.length) { - this.skipSpaces(query, context); - if (query[context.offset] == ")") { - return "(" + expressions.join(" || ") + ")"; + return "(" + expressions.join(" " + setOperator + " ") + ")"; } else { expressions.push(this.translateExpression(query, context)); } Modified: test/bq-translator.test.js (+1 -1) =================================================================== --- test/bq-translator.test.js 2012-07-27 17:07:40 +0900 (7080c73) +++ test/bq-translator.test.js 2012-07-27 17:09:34 +0900 (fcb022e) @@ -66,7 +66,7 @@ suite('BoolanQueryTranslator', function() { "(and 'query query' type:'ModelName')"); testGroup("and", - "field1 @ \"keyword1\" && field2 @ \"keyword2\"", + "(field1 @ \"keyword1\" && field2 @ \"keyword2\")", "(and field1:'keyword1' field2:'keyword2')".length, "(and field1:'keyword1' field2:'keyword2') (other group)"); testGroup("or", -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...Download