LavishScript:Select
Jump to navigation
Jump to search
Select is the next generation of LavishScript's Object Queries, which are deprecated but will remain as-is.
- The most obvious benefits include...
- Custom syntax eliminated in favor of using JSON to describe the query
- No need to pre-define and register/free a query
Defining a Select Query
A Select Query is defined by a JSON object with any of the following parameters (all of them are optional, except those required by specific operations).
Select Query properties | |
---|---|
member | A string specifying the name of a Member, optionally with an args array of parameters for the Member, to use (prior to eval, op, with). Not used by default. |
eval | A string specifying a LavishScript Data Sequence (excluding ${}). Use Select to refer to the object/member being tested. e.g. Select.Get[name] |
op | A string specifying an operation to perform, one of: == != < > <= >= ! && ||. Each operation has at least one further required property, described below. |
with | An array of additional Select Queries |
limit | Optionally used only by SelectKeys and SelectValues queries, a number specifying the maximum number of results to produce |
n | Optionally used only by SelectKey and SelectValue queries, a number specifying that the nth matching key or value should be selected |
value | Required by Comparison operations, a value to compare the to |
list | Required by Grouping operations, an array of nested Select Queries |
select | Required by the Negation operation, a single nested Select Query |
Operations
- Comparison operations == != < > <= >= require a value parameter, specifying a value to compare to.
- Grouping operations && || require a list parameter, specifying an array of nested Select Queries. Each operation is executed in order, until a short-circuit condition is met (e.g. any test within an OR operation is TRUE, or any test within an AND operation is FALSE)
- Negation operation ! requires a select parameter, specifying a single nested Select Query
Examples
Example 1
In this example, a JSON object is being tested against, and it has an "id" property. The following Query is equivalent to if ${Select.Get[id]}==9012 || ${This.Select[id]}<2000
{ "eval":"Select.Get[id]", "op":"||", "list":[ { "op":"==", "value":9012 }, { "op":"<", "value":2000 } ] }