This package implements the parsing logic of filters of the Algolia search engine in JavaScript. On top of this it renders HTML to allow to have a visual output. This is especially useful when there is an error in the output.
<script src="https://cdn.jsdelivr.net/npm/algolia-filters-js-syntax-validator@latest"></script>
// `npm install algolia-filters-js-syntax-validator --save`
// or
// `yarn add algolia-filters-js-syntax-validator`
const Parser = require('algolia-filters-js-syntax-validator');
const parser = new Parser();
const response = parser.parse('A OR B');
The response
object will contain 3 attributes:
response.html
: contains the html containing span elements. Each span has classes that can be used to add color to each tokens. In most cases you will just display this string.response.errorMessage
:- if the input is not valid: string containing the error message
- if the input is valid: empty string
response.tokens
: the list of tokens. can be used for advanced display in caseresponse.html
does not fit the need.type
: Type of the tokenvalue
: value of the tokenraw_value
: same asvalue
but contains quotes (if present) for string types.pos
: position of the token in the inputerrorStart
: whether an error starts at this tokenerrorStop
: whether an error ends at this tokenunexpectedMessage
: contains an error message if the token is not expectedafterSeparators
: string containing spaces present before the next tokencssClasses
: list of cssClasses to be applied to the token spanafterSeparatorsCssClasses
: list of cssClasses to be applied to the spaces span
{
"html":"<span class=\"token First_Token\"></span><span class=\"token-spaces\">[...]",
"errorMessage":"",
"tokens":[
{
"type":"First_Token",
"value":"",
"raw_value":"",
"pos":0,
"errorStart":false,
"errorStop":false,
"unexpectedMessage":"",
"afterSeparators":"",
"cssClasses":[
"token",
"First_Token"
],
"afterSeparatorsCssClasses":[
"token-spaces"
]
},
[...]
]
}
Type of span:
token
token-spaces
Status:
unexpected
Tokens:
Token_OR
Token_AND
Token_NOT
Token_Range
Token_Num
Token_Empty_Str
Token_String
Token_Incomplete_Str
Token_Operator
Token_Open_Angled_Bracket
Token_Close_Angled_Bracket
Token_Error
Token_Open_Backet
Token_Close_Bracket
Token_Facet_Separator
Token_Coma
Token_Error
Token_EOF
yarn
yarn watch
You can test the output by opening dev/index.html
in your web browser
yarn test
On your side:
- Fork and clone the project
- Create a new branch for what you want to solve
- Make your changes
- Open a pull request on the
develop
branch
Then:
- Peer review of the pull request (by at least one of the core contributors)
- Automatic tests
- When everything is green, your contribution is merged 🚀