Comparing version 2.3.1 to 2.3.2
# Changelog | ||
## 2.3.2 | ||
* Fix bug [#369](https://github.com/olivernn/lunr.js/issues/369) in parsing queries that include either a boost or edit distance modifier followed by a presence modifier on a subsequent term. Thanks [mtdjr](https://github.com/mtdjr) for reporting. | ||
## 2.3.1 | ||
@@ -4,0 +8,0 @@ |
@@ -205,2 +205,5 @@ lunr.QueryParser = function (str, query) { | ||
return lunr.QueryParser.parseBoost | ||
case lunr.QueryLexer.PRESENCE: | ||
parser.nextClause() | ||
return lunr.QueryParser.parsePresence | ||
default: | ||
@@ -246,2 +249,5 @@ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" | ||
return lunr.QueryParser.parseBoost | ||
case lunr.QueryLexer.PRESENCE: | ||
parser.nextClause() | ||
return lunr.QueryParser.parsePresence | ||
default: | ||
@@ -248,0 +254,0 @@ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" |
{ | ||
"name": "lunr", | ||
"description": "Simple full-text search in your browser.", | ||
"version": "2.3.1", | ||
"version": "2.3.2", | ||
"author": "Oliver Nightingale", | ||
@@ -6,0 +6,0 @@ "keywords": ["search"], |
@@ -186,2 +186,30 @@ suite('lunr.QueryLexer', function () { | ||
suite('multiple terms with presence and fuzz', function () { | ||
setup(function () { | ||
this.lexer = lex('+foo~1 +bar') | ||
}) | ||
test('produces n lexemes', function () { | ||
assert.lengthOf(this.lexer.lexemes, 5) | ||
}) | ||
suite('lexemes', function () { | ||
setup(function () { | ||
this.fooPresenceLexeme = this.lexer.lexemes[0] | ||
this.fooTermLexeme = this.lexer.lexemes[1] | ||
this.fooFuzzLexeme = this.lexer.lexemes[2] | ||
this.barPresenceLexeme = this.lexer.lexemes[3] | ||
this.barTermLexeme = this.lexer.lexemes[4] | ||
}) | ||
test('#type', function () { | ||
assert.equal(lunr.QueryLexer.PRESENCE, this.fooPresenceLexeme.type) | ||
assert.equal(lunr.QueryLexer.TERM, this.fooTermLexeme.type) | ||
assert.equal(lunr.QueryLexer.EDIT_DISTANCE, this.fooFuzzLexeme.type) | ||
assert.equal(lunr.QueryLexer.PRESENCE, this.barPresenceLexeme.type) | ||
assert.equal(lunr.QueryLexer.TERM, this.barTermLexeme.type) | ||
}) | ||
}) | ||
}) | ||
suite('separator length > 1', function () { | ||
@@ -188,0 +216,0 @@ setup(function () { |
@@ -123,2 +123,68 @@ suite('lunr.QueryParser', function () { | ||
suite('edit distance followed by presence', function () { | ||
setup(function () { | ||
this.clauses = parse('foo~10 +bar') | ||
}) | ||
test('has 2 clause', function () { | ||
assert.lengthOf(this.clauses, 2) | ||
}) | ||
suite('clauses', function () { | ||
setup(function () { | ||
this.fooClause = this.clauses[0] | ||
this.barClause = this.clauses[1] | ||
}) | ||
test('#term', function () { | ||
assert.equal('foo', this.fooClause.term) | ||
assert.equal('bar', this.barClause.term) | ||
}) | ||
test('#presence', function () { | ||
assert.equal(lunr.Query.presence.OPTIONAL, this.fooClause.presence) | ||
assert.equal(lunr.Query.presence.REQUIRED, this.barClause.presence) | ||
}) | ||
test('#editDistance', function () { | ||
assert.equal(10, this.fooClause.editDistance) | ||
// It feels dirty asserting that something is undefined | ||
// but there is no Optional so this is what we are reduced to | ||
assert.isUndefined(this.barClause.editDistance) | ||
}) | ||
}) | ||
}) | ||
suite('boost followed by presence', function () { | ||
setup(function () { | ||
this.clauses = parse('foo^10 +bar') | ||
}) | ||
test('has 2 clause', function () { | ||
assert.lengthOf(this.clauses, 2) | ||
}) | ||
suite('clauses', function () { | ||
setup(function () { | ||
this.fooClause = this.clauses[0] | ||
this.barClause = this.clauses[1] | ||
}) | ||
test('#term', function () { | ||
assert.equal('foo', this.fooClause.term) | ||
assert.equal('bar', this.barClause.term) | ||
}) | ||
test('#presence', function () { | ||
assert.equal(lunr.Query.presence.OPTIONAL, this.fooClause.presence) | ||
assert.equal(lunr.Query.presence.REQUIRED, this.barClause.presence) | ||
}) | ||
test('#boost', function () { | ||
assert.equal(10, this.fooClause.boost) | ||
assert.equal(1, this.barClause.boost) | ||
}) | ||
}) | ||
}) | ||
suite('field without a term', function () { | ||
@@ -125,0 +191,0 @@ test('fails with lunr.QueryParseError', function () { |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
940791
28563