1 | const { create, all, factory } = require('../..')
|
2 |
|
3 |
|
4 |
|
5 | console.log('default (compare string by their numerical value)')
|
6 | const { evaluate } = create(all)
|
7 | evaluateAndLog(evaluate, '2 < 10')
|
8 | evaluateAndLog(evaluate, '"2" < "10"')
|
9 | evaluateAndLog(evaluate, '"a" == "b"')
|
10 | evaluateAndLog(evaluate, '"a" == "a"')
|
11 | console.log('')
|
12 |
|
13 |
|
14 |
|
15 |
|
16 | console.log('custom (compare strings lexically)')
|
17 |
|
18 | const allWithCustomFunctions = {
|
19 | ...all,
|
20 |
|
21 | createEqual: factory('equal', [], () => function equal (a, b) {
|
22 | return a === b
|
23 | }),
|
24 |
|
25 | createUnequal: factory('unequal', [], () => function unequal (a, b) {
|
26 | return a !== b
|
27 | }),
|
28 |
|
29 | createSmaller: factory('smaller', [], () => function smaller (a, b) {
|
30 | return a < b
|
31 | }),
|
32 |
|
33 | createSmallerEq: factory('smallerEq', [], () => function smallerEq (a, b) {
|
34 | return a <= b
|
35 | }),
|
36 |
|
37 | createLarger: factory('larger', [], () => function larger (a, b) {
|
38 | return a > b
|
39 | }),
|
40 |
|
41 | createLargerEq: factory('largerEq', [], () => function largerEq (a, b) {
|
42 | return a >= b
|
43 | }),
|
44 |
|
45 | createCompare: factory('compare', [], () => function compare (a, b) {
|
46 | return a > b ? 1 : a < b ? -1 : 0
|
47 | })
|
48 | }
|
49 | const evaluateCustom = create(allWithCustomFunctions).evaluate
|
50 | evaluateAndLog(evaluateCustom, '2 < 10')
|
51 | evaluateAndLog(evaluateCustom, '"2" < "10"')
|
52 | evaluateAndLog(evaluateCustom, '"a" == "b"')
|
53 | evaluateAndLog(evaluateCustom, '"a" == "a"')
|
54 |
|
55 |
|
56 | function evaluateAndLog (evaluate, expression) {
|
57 | try {
|
58 | console.log(expression, evaluate(expression))
|
59 | } catch (err) {
|
60 | console.error(expression, err.toString())
|
61 | }
|
62 | }
|