Skip to main content

Selection functions

var

Commentary​

added in 0.0.5

Look up a variable defined in the top-level vars or varsOnce sections, optionally drilling into its subvalue with path. Vars may refer to other variables.

If you make multiple references to the same var in a single generator, you are guaranteed to get the same value each time.

Values in varsOnce are only ever evaluated once, and then locked for the duration of the generator, as the name implies.

You can use vars to generate multiple values in one shot, then drill into them with the path function modifier. 1


Examples​

Retrieve a variable​

Use vars to generate a fresh value for each iteration. Use varsOnce to generate values only once and then lock them.

{
"topic": "sandbox",
"vars": {
"val1": {
"_gen": "uniformDistribution",
"bounds": [
1,
5
]
}
},
"varsOnce": {
"val2": {
"_gen": "uniformDistribution",
"bounds": [
1,
5
]
}
},
"value": {
"val1": {
"_gen": "var",
"var": "val1"
},
"val2": {
"_gen": "var",
"var": "val2"
}
}
}
[
{
"val2": 1.3178320995595154,
"val1": 1.0054546829864375
},
{
"val2": 1.3178320995595154,
"val1": 3.831433687297641
},
{
"val2": 1.3178320995595154,
"val1": 1.6900542349166408
},
{
"val2": 1.3178320995595154,
"val1": 1.7441971548572552
},
{
"val2": 1.3178320995595154,
"val1": 1.2881992301426748
}
]

Drill into a map​

Use a compound structure, like a map, to generate multiple values assigned to one var. This is especially useful for choices where two or more values relate to each other.

{
"topic": "sandbox",
"vars": {
"profile": {
"_gen": "oneOf",
"choices": [
{
"luckyNumber": {
"_gen": "uniformDistribution",
"bounds": [
1,
50
],
"decimals": 0
},
"active": false
},
{
"luckyNumber": {
"_gen": "uniformDistribution",
"bounds": [
50,
99
],
"decimals": 0
},
"active": true
}
]
}
},
"value": {
"userProfile": {
"theNumber": {
"_gen": "var",
"var": "profile",
"path": [
"luckyNumber"
]
},
"tags": {
"isActive": {
"_gen": "var",
"var": "profile",
"path": [
"active"
]
}
}
}
}
}
[
{
"userProfile": {
"tags": {
"isActive": false
},
"theNumber": 1
}
},
{
"userProfile": {
"tags": {
"isActive": false
},
"theNumber": 41
}
},
{
"userProfile": {
"tags": {
"isActive": false
},
"theNumber": 10
}
},
{
"userProfile": {
"tags": {
"isActive": false
},
"theNumber": 44
}
},
{
"userProfile": {
"tags": {
"isActive": true
},
"theNumber": 53
}
}
]

Specification​

JSON schema​

{
"type": "object",
"properties": {
"var": {
"type": "string"
},
"path": {
"type": "array",
"items": {
"oneOf": [
{
"type": "integer",
"minimum": 0
},
{
"type": "string"
}
]
}
}
},
"required": [
"var"
]
}