note. prefix also separates fulltext tokens from expression tokens

This commit is contained in:
zadam 2020-08-20 13:53:15 +02:00
parent 20b4b059e3
commit d037420acb
2 changed files with 17 additions and 0 deletions

View File

@ -75,6 +75,19 @@ describe("Lexer expression", () => {
]);
});
it("note. prefix also separates fulltext from expression", () => {
expect(lex(`hello fulltext note.labels.capital = Prague`).expressionTokens.map(t => t.token))
.toEqual(["note", ".", "labels", ".", "capital", "=", "prague"]);
});
it("note. prefix in quotes will note start expression", () => {
expect(lex(`hello fulltext "note.txt"`).expressionTokens.map(t => t.token))
.toEqual([]);
expect(lex(`hello fulltext "note.txt"`).fulltextTokens.map(t => t.token))
.toEqual(["hello", "fulltext", "note.txt"]);
});
it("complex expressions with and, or and parenthesis", () => {
expect(lex(`# (#label=text OR #second=text) AND ~relation`).expressionTokens.map(t => t.token))
.toEqual(["#", "(", "#label", "=", "text", "or", "#second", "=", "text", ")", "and", "~relation"]);

View File

@ -83,6 +83,10 @@ function lex(str) {
continue;
}
else if (!quotes) {
if (!fulltextEnded && currentWord === 'note' && chr === '.') {
fulltextEnded = true;
}
if (chr === '#' || chr === '~') {
if (!fulltextEnded) {
fulltextEnded = true;