0.0.14 • Published 6 years ago
json-evaluator v0.0.14
json-evaluator
The aim of the json is to produce a boolean
Installation
Yarn
yarn add json-evaluatorNPM
npm i json-evaluatorUsage
Import the package
import evaluator from 'json-evaluator'Validate the JSON instance
evaluator.validator.validate(instance, {})instanceis a JSON object
Evaluate the JSON instance
evaluator.evaluate(JSON.parse(instance), {})How does the JSON work ?
The json needs 3 properties:
- a value to compare
- a value to compare to
- an operator
{
"compare": {},
"compareTo": {},
"operator": ""
}A value is defined by two properties:
- The type of the value
- The value itself
{
"type": "",
"value: "",
}Obviously:
- the type and the value have to match
- the operator has to be one of the allowed as well
Allowed types are:
stringnumberbooleanexpressionfield
An expression is simply another node to compare, the value is thus the object you want to evaluate.
A field can be used to give an external value. External values can be given through a dictionnary. The value will then be the dictionnary key that holds the value.
Allowed operators are:
><=>>===!=||&&orand
They obviously can't be applied to all types.
Examples
Not all operators match
Bad
{
"compare": {
"type": "string",
"value": "olivier"
},
"compareTo": {
"type": "string",
"value": "arnaud"
},
"operator": ">="
}This will produce an error
Good
{
"compare": {
"type": "string",
"value": "olivier"
},
"compareTo": {
"type": "string",
"value": "arnaud"
},
"operator": "=="
}This will produce false
Type and value have to match
Bad
{
"compare": {
"type": "string",
"value": 14
}
}Good
{
"compare": {
"type": "number",
"value": 14
}
}"Expression" type
{
"compare": {
"type": "expression",
"value": {
"compare": {
"type": "string",
"value": "olivier"
},
"compareTo": {
"type": "string",
"value": "arnaud"
},
"operator": "=="
}
},
"compareTo": {
"type": "boolean",
"value": true
},
"operator": "&&"
}This will produce (bool) false because:
"olivier" == "arnaud"isfalsetrue && falseisfalse
Misc
Run de tests
yarn test tests/Generate dist files
./node_modules/.bin/babel lib/ --out-dir dist/0.0.14
6 years ago
0.1.0
6 years ago
0.0.13-beta
7 years ago
0.0.12-beta
7 years ago
0.0.11-beta
7 years ago
0.0.10-beta
7 years ago
0.0.9-beta
7 years ago
0.0.8-beta
7 years ago
0.0.7-beta
7 years ago
0.0.6-beta
7 years ago
0.0.5-beta
7 years ago
0.0.4-beta
7 years ago
0.0.1-beta
7 years ago