Skip to content

Commit 8ebbe99

Browse files
authored
Merge pull request #33 from sidhant92/arithmetic
update readme
2 parents e235142 + cf20369 commit 8ebbe99

1 file changed

Lines changed: 65 additions & 19 deletions

File tree

README.md

Lines changed: 65 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ Parentheses, `(` and `)`, can be used for grouping.
4848
* Phrases that includes quotes, like `content = "It's a wonderful day"`
4949
* Phrases that includes quotes, like `attribute = 'She said "Hello World"'`
5050
* For nested keys in data map you can use the dot notation, like `person.age`
51+
* There are two implementations for the parser, Boolparser and CachedBoolParser. CachedBoolParser takes input the max cache size.
5152

5253
## Usage
5354
POM
@@ -56,14 +57,14 @@ POM
5657
<dependency>
5758
<groupId>com.github.sidhant92</groupId>
5859
<artifactId>bool-parser-java</artifactId>
59-
<version>1.0.0</version>
60+
<version>2.0.0</version>
6061
</dependency>
6162
</dependencies>
6263
```
6364
Gradle
6465
```
6566
dependencies {
66-
implementation "com.github.sidhant92:bool-parser-java:1.0.0"
67+
implementation "com.github.sidhant92:bool-parser-java:2.0.0"
6768
}
6869
```
6970

@@ -146,45 +147,90 @@ Usage examples:
146147

147148
Simple Numerical Comparison
148149
```
149-
final BooleanExpressionEvaluator booleanExpressionEvaluator = new BooleanExpressionEvaluator();
150+
final BooleanExpressionEvaluator booleanExpressionEvaluator = new BooleanExpressionEvaluator(new Boolparser());
150151
final Map<String, Object> data = new HashMap<>();
151152
data.put("age", 26);
152-
final Try<Boolean> result = booleanExpressionEvaluator.evaluate("age >= 27", data);
153-
assertTrue(booleanOptional.isPresent());
154-
assertFalse(booleanOptional.get());
153+
final Try<Boolean> resultOptional = booleanExpressionEvaluator.evaluate("age >= 27", data);
154+
assertTrue(resultOptional.isPresent());
155+
assertFalse(resultOptional.get());
155156
```
156157
Boolean Comparison
157158
```
158-
final BooleanExpressionEvaluator booleanExpressionEvaluator = new BooleanExpressionEvaluator();
159+
final BooleanExpressionEvaluator booleanExpressionEvaluator = new BooleanExpressionEvaluator(new Boolparser());
159160
final Map<String, Object> data = new HashMap<>();
160161
data.put("age", 25);
161162
data.put("name", "sid");
162-
final Try<Boolean> result = booleanExpressionEvaluator.evaluate("name = sid AND age = 25", data);
163-
assertTrue(booleanOptional.isPresent());
164-
assertTrue(booleanOptional.get());
163+
final Try<Boolean> resultOptional = booleanExpressionEvaluator.evaluate("name = sid AND age = 25", data);
164+
assertTrue(resultOptional.isPresent());
165+
assertTrue(resultOptional.get());
165166
```
166167
Nested Boolean Comparison
167168
```
168-
final BooleanExpressionEvaluator booleanExpressionEvaluator = new BooleanExpressionEvaluator();
169+
final BooleanExpressionEvaluator booleanExpressionEvaluator = new BooleanExpressionEvaluator(new Boolparser());
169170
final Map<String, Object> data = new HashMap<>();
170171
data.put("age", 25);
171172
data.put("name", "sid");
172173
data.put("num", 45);
173-
final Try<Boolean> result = booleanExpressionEvaluator.evaluate("name:sid AND (age = 25 OR num = 44)", data);
174-
assertTrue(booleanOptional.isPresent());
175-
assertTrue(booleanOptional.get());
174+
final Try<Boolean> resultOptional = booleanExpressionEvaluator.evaluate("name:sid AND (age = 25 OR num = 44)", data);
175+
assertTrue(resultOptional.isPresent());
176+
assertTrue(resultOptional.get());
176177
```
177178
App Version Comparison
178179
```
179-
final BooleanExpressionEvaluator booleanExpressionEvaluator = new BooleanExpressionEvaluator();
180+
final BooleanExpressionEvaluator booleanExpressionEvaluator = new BooleanExpressionEvaluator(new Boolparser());
180181
final Map<String, Object> data = new HashMap<>();
181182
data.put("app_version", "1.5.9");
182-
final Try<Boolean> result = booleanExpressionEvaluator.evaluate("app_version < 1.5.10", data);
183-
assertTrue(booleanOptional.isPresent());
184-
assertTrue(booleanOptional.get());
183+
final Try<Boolean> resultOptional = booleanExpressionEvaluator.evaluate("app_version < 1.5.10", data);
184+
assertTrue(resultOptional.isPresent());
185+
assertTrue(resultOptional.get());
185186
```
186187

187188
The return type is `Try<Boolean>`. Failure means that parsing has failed and any fallback can be used.
188189

189190

190-
[For a complete list of examples please check out the test file](src/test/java/com/github/sidhant92/boolparser/application/BooleanExpressionEvaluatorTest.java)
191+
[For a complete list of examples please check out the test file](src/test/java/com/github/sidhant92/boolparser/application/BooleanExpressionEvaluatorTest.java)
192+
193+
194+
### Arithmetic Expression Evaluator
195+
196+
The library can be used to evaluate a arithmetic expression.
197+
It supports both numbers and variables which will be substituted from the passed data.
198+
The passed variables can also be passed using the dot notation to access nested fields from the input data.
199+
200+
The following Data Types are supported:
201+
1. String
202+
2. Integer
203+
3. Long
204+
4. Decimal
205+
206+
The following Operators are supported:
207+
1. Addition (+)
208+
2. Subtraction (-)
209+
3. Multiplication (*)
210+
4. Division (/)
211+
5. Modulus (%)
212+
6. Exponent (^)
213+
214+
Usage examples:
215+
216+
Simple Addition Operation
217+
```
218+
final ArithmeticExpressionEvaluator evaluator = new ArithmeticExpressionEvaluator(new Boolparser());
219+
final Map<String, Object> data = new HashMap<>();
220+
data.put("a", 10);
221+
final Try<Object> resultOptional = evaluator.evaluate("a + 5", data);
222+
assertTrue(resultOptional.isPresent());
223+
assertTrue(resultOptional.get(), 15);
224+
```
225+
226+
Complex Arithmetic Operation
227+
```
228+
final ArithmeticExpressionEvaluator evaluator = new ArithmeticExpressionEvaluator(new Boolparser());
229+
final Map<String, Object> data = new HashMap<>();
230+
data.put("a", 10);
231+
final Try<Object> resultOptional = evaluator.evaluate("((5 * 2) + a) * 2 + (1 + 3 * (a / 2))", data);
232+
assertTrue(resultOptional.isPresent());
233+
assertTrue(resultOptional.get(), 56);
234+
```
235+
236+
[For a complete list of examples please check out the test file](src/test/java/com/github/sidhant92/boolparser/application/ArithmeticExpressionEvaluatorTest.java)

0 commit comments

Comments
 (0)