diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2019-02-28 20:34:31 -0500 |
|---|---|---|
| committer | Dave Henderson <dhenderson@gmail.com> | 2019-03-17 13:00:23 -0400 |
| commit | 0347dd1f69480206fb23ff754cbf5b459bf06817 (patch) | |
| tree | 91cc47762c0cb13c53d66d969fda29c511523a5a /docs-src | |
| parent | 13c1c4bf680acb6c9421c30c72ec21a626897b70 (diff) | |
New random namespace for generating random strings and numbers
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'docs-src')
| -rw-r--r-- | docs-src/content/functions/random.yml | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/docs-src/content/functions/random.yml b/docs-src/content/functions/random.yml new file mode 100644 index 00000000..b4f8c4cd --- /dev/null +++ b/docs-src/content/functions/random.yml @@ -0,0 +1,169 @@ +ns: random +title: random functions +preamble: | + Functions for generating random values. + + ### About randomness + + `gomplate` uses Go's [`math/rand`](https://golang.org/pkg/math/rand/) package + to generate pseudo-random numbers. Note that these functions are not suitable + for use in security-sensitive applications, such as cryptography. However, + these functions will not deplete system entropy. +funcs: + - name: random.ASCII + description: | + Generates a random string of a desired length, containing the set of + printable characters from the 7-bit [ASCII](https://en.wikipedia.org/wiki/ASCII) + set. This includes _space_ (' '), but no other whitespace characters. + pipeline: false + arguments: + - name: count + required: true + description: the length of the string to produce (number of characters) + examples: + - | + $ gomplate -i '{{ random.ASCII 8 }}' + _woJ%D&K + - name: random.Alpha + description: | + Generates a random alphabetical (`A-Z`, `a-z`) string of a desired length. + pipeline: false + arguments: + - name: count + required: true + description: the length of the string to produce (number of characters) + examples: + - | + $ gomplate -i '{{ random.Alpha 42 }}' + oAqHKxHiytYicMxTMGHnUnAfltPVZDhFkVkgDvatJK + - name: random.AlphaNum + description: | + Generates a random alphanumeric (`0-9`, `A-Z`, `a-z`) string of a desired length. + pipeline: false + arguments: + - name: count + required: true + description: the length of the string to produce (number of characters) + examples: + - | + $ gomplate -i '{{ random.AlphaNum 16 }}' + 4olRl9mRmVp1nqSm + - name: random.String + description: | + Generates a random string of a desired length. + + By default, the possible characters are those represented by the + regular expression `[a-zA-Z0-9_.-]` (alphanumeric, plus `_`, `.`, and `-`). + + A different set of characters can be specified with a regular expression, + or by giving a range of possible characters by specifying the lower and + upper bounds. Lower/upper bounds can be specified as characters (e.g. + `"q"`, or escape sequences such as `"\U0001f0AF"`), or numeric Unicode + code-points (e.g. `48` or `0x30` for the character `0`). + + When given a range of Unicode code-points, `random.String` will discard + non-printable characters from the selection. This may result in a much + smaller set of possible characters than intended, so check + the [Unicode character code charts](http://www.unicode.org/charts/) to + verify the correct code-points. + pipeline: false + arguments: + - name: count + required: true + description: the length of the string to produce (number of characters) + - name: regex + required: false + description: the regular expression that each character must match (defaults to `[a-zA-Z0-9_.-]`) + - name: lower + required: false + description: lower bound for a range of characters (number or single character) + - name: upper + required: false + description: upper bound for a range of characters (number or single character) + examples: + - | + $ gomplate -i '{{ random.String 8 }}' + FODZ01u_ + - | + $ gomplate -i '{{ random.String 16 `[[:xdigit:]]` }}' + B9e0527C3e45E1f3 + - | + $ gomplate -i '{{ random.String 20 `[\p{Canadian_Aboriginal}]` }}' + ᗄᖖᣡᕔᕫᗝᖴᒙᗌᘔᓰᖫᗵᐕᗵᙔᗠᓅᕎᔹ + - | + $ gomplate -i '{{ random.String 8 "c" "m" }}' + ffmidgjc + - | + $ gomplate -i 'You rolled... {{ random.String 3 "⚀" "⚅" }}' + You rolled... ⚅⚂⚁ + - | + $ gomplate -i 'Poker time! {{ random.String 5 "\U0001f0a1" "\U0001f0de" }}' + Poker time! 🂼🂺🂳🃅🂪 + - name: random.Item + description: | + Pick an element at a random from a given slice or array. + pipeline: true + arguments: + - name: items + required: true + description: the input array + examples: + - | + $ gomplate -i '{{ random.Item (seq 0 5) }}' + 4 + - | + $ export SLICE='["red", "green", "blue"]' + $ gomplate -i '{{ getenv "SLICE" | jsonArray | random.Item }}' + blue + - name: random.Number + description: | + Pick a random integer. By default, a number between `0` and `100` + (inclusive) is chosen, but this range can be overridden. + + Note that the difference between `min` and `max` can not be larger than a + 63-bit integer (i.e. the unsigned portion of a 64-bit signed integer). + The result is given as an `int64`. + pipeline: false + arguments: + - name: min + required: false + description: The minimum value, defaults to `0`. Must be less than `max`. + - name: max + required: false + description: The maximum value, defaults to `100` (if no args provided) + examples: + - | + $ gomplate -i '{{ random.Number }}' + 55 + - | + $ gomplate -i '{{ random.Number -10 10 }}' + -3 + - | + $ gomplate -i '{{ random.Number 5 }}' + 2 + - name: random.Float + description: | + Pick a random decimal floating-point number. By default, a number between + `0.0` and `1.0` (_exclusive_, i.e. `[0.0,1.0)`) is chosen, but this range + can be overridden. + + The result is given as a `float64`. + pipeline: false + arguments: + - name: min + required: false + description: The minimum value, defaults to `0.0`. Must be less than `max`. + - name: max + required: false + description: The maximum value, defaults to `1.0` (if no args provided). + examples: + - | + $ gomplate -i '{{ random.Float }}' + 0.2029946480303966 + - | + $ gomplate -i '{{ random.Float 100 }}' + 71.28595374161743 + - | + $ gomplate -i '{{ random.Float -100 200 }}' + 105.59119437834909 +
\ No newline at end of file |
