Skip to content

yankeguo-deprecated/azuki-ea09941a

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Azuki

Migrated to guoyk93/azuki https://github.com/guoyk93/azuki

Build Status

<dependency>
  <groupId>com.ireul.azuki</groupId>
  <artifactId>azuki</artifactId>
  <version>1.1</version>
</dependency>

Azuki is a simple Map evaluation tool

Example

Create a Expression using Azuki.build(Object), passing a Map like this

not:
  and:
    - equals:
      key1: value1
      key2: value2
    - startsWith:
      key3: value3
      key4: value4

Then execute the Expression with Expression#validate(Map)

Passing a Map like this

key1: value1
key2: value2
key3: value3hello
key4: value4world

The Expression will evaluate the map like this

!(
  (
    map.get("key1").equals("value1")
    &&
    map.get("key2").equals("value2")
  )
  &&
  (
    map.get("key3").startsWith("value3")
    &&
    map.get("key4").startsWith("value4")
  )
 )

and returns false in this case.

All Expressions Can be Infinitely Nested

Supported Expressions

Evaluation Expressions

Evaluation Expressions is presented as a Map, it execute the actual evaluation.

If all Key-Value pairs passed, the expression returns true.

  • equals
  • equalsIgnoreCase
  • contains
  • containsIgnoreCase
  • startsWith
  • startsWithIgnoreCase
  • endsWith
  • endsWithIgnoreCase
  • regex
  • exists

For exists, you can check both existence and non-existence

exists:
  key1: t
  key2: true
  key3: yes
  key4: f
  key5: false
  key6: no

This will check existence of key1-3 and non-existence of key4-6

string starts with f, n will be regarded as non-existence validation.

Combination Expressions

Combination Expressions accept a array of expressions, used for combination

  • all
  • any
  • none

Wrapper Expressions

Wrapper Expressions wraps one single expression, basically for not operation

  • not