Currently we support a DSL to match routes with variables: ``` [ ["arg_name","==","json"], ["arg_weight",">",10], ["arg_weight","!",">",15] ] ```
is evaluated to `ngx.var.arg_name == "json" and ngx.var.arg_weight > 10 and not ngx.var.arg_weight > 15`. It would be better if the DSL can support `or` relation and nested expressions. What about a syntax like: ``` { "or": [ <- the `or` can be other logical operators, like `and`, `!or`, `!and` ["arg_name","==","json"], ["arg_weight",">",10], ["arg_weight","!",">",15] ] } ``` (means `ngx.var.arg_name == "json" or ngx.var.arg_weight > 10 or not ngx.var.arg_weight > 15` ) and ``` { "!and": { "and": [ ["arg_name","==","yaml"] ], "or": [ ["arg_name","==","json"], ["arg_weight",">",10], ["arg_weight","!",">",15] ] } } ``` (means `not (ngx.var.arg_name == "yaml" and (ngx.var.arg_name == "json" or ngx.var.arg_weight > 10 or not ngx.var.arg_weight > 15))` )