1.0.2 • Published 5 years ago
algolia-filters-js-syntax-validator v1.0.2
Algolia filters JS syntax validator
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.
Table of content
How to install
CDN
<script src="https://cdn.jsdelivr.net/npm/algolia-filters-js-syntax-validator@latest"></script>Yarn
// `npm install algolia-filters-js-syntax-validator --save`
// or
// `yarn add algolia-filters-js-syntax-validator`
const Parser = require('algolia-filters-js-syntax-validator');How to use
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.htmldoes not fit the need.type: Type of the tokenvalue: value of the tokenraw_value: same asvaluebut 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
Example of response object
{
"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"
]
},
[...]
]
}CSS Classes
Type of span:
tokentoken-spaces
Status:
unexpected
Tokens:
Token_ORToken_ANDToken_NOTToken_RangeToken_NumToken_Empty_StrToken_StringToken_Incomplete_StrToken_OperatorToken_Open_Angled_BracketToken_Close_Angled_BracketToken_ErrorToken_Open_BacketToken_Close_BracketToken_Facet_SeparatorToken_ComaToken_ErrorToken_EOF
Contributing
Launch the dev environment
yarn
yarn watchYou can test the output by opening dev/index.html in your web browser
Run the tests
yarn testThe code contribution process
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
developbranch
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 🚀