aboutsummaryrefslogtreecommitdiffstats
path: root/lib/random.moon
diff options
context:
space:
mode:
Diffstat (limited to 'lib/random.moon')
-rw-r--r--lib/random.moon65
1 files changed, 35 insertions, 30 deletions
diff --git a/lib/random.moon b/lib/random.moon
index b97671d..a3124fa 100644
--- a/lib/random.moon
+++ b/lib/random.moon
@@ -23,38 +23,20 @@ range can be one of:
- (num) [ 0 - num["
class num extends Op
- @doc: "(random/num [trigger] [range]) - create a random number
-
-generates a random value in range on create and trigger.
+num = Value.meta
+ meta:
+ name: 'num'
+ summary: 'Generate a random number.'
+ examples: { '(random/num [trigger] [range]))' }
+ description: "generate a random value in `range` when created and on `trig`.
#{range_doc}"
- new: =>
- super 'num'
- @gen!
-
- gen: => @state = { math.random! }
-
- setup: (inputs) =>
- { trig, range } = match 'bang? any?', inputs
- super
- trig: trig and Input.event trig
- range: Input.value range or Value.str 'uni'
-
- tick: =>
- @gen! if @inputs.trig and @inputs.trig\dirty!
- @out\set apply_range @inputs.range, @state[1]
-vec_ = (n) ->
- class vec extends Op
- @doc: "(random/vec#{n} [trigger] [range]) - create a random number
-
-generates a random vec#{n} on create and trigger.
-each component is in range.
-#{range_doc}"
+ value: class extends Op
new: =>
- super "vec#{n}"
+ super 'num'
@gen!
- gen: => @state = for i=1,n do math.random!
+ gen: => @state = { math.random! }
setup: (inputs) =>
{ trig, range } = match 'bang? any?', inputs
@@ -64,10 +46,33 @@ each component is in range.
tick: =>
@gen! if @inputs.trig and @inputs.trig\dirty!
- @out\set [apply_range @inputs.range, v for v in *@state]
+ @out\set apply_range @inputs.range, @state[1]
+
+vec_ = (n) ->
+ Value.meta
+ meta:
+ name: "vec#{n}"
+ summary: 'Generate a random vector.'
+ examples: { '(random/vec#{n} [trigger] [range]))' }
+ description: "generate a random vec#{n} in `range` when created and on `trig`.
+#{range_doc}"
+
+ value: class extends Op
+ new: =>
+ super "vec#{n}"
+ @gen!
+
+ gen: => @state = for i=1,n do math.random!
+
+ setup: (inputs) =>
+ { trig, range } = match 'bang? any?', inputs
+ super
+ trig: trig and Input.event trig
+ range: Input.value range or Value.str 'uni'
- vec.__name = "vec#{n}"
- vec
+ tick: =>
+ @gen! if @inputs.trig and @inputs.trig\dirty!
+ @out\set [apply_range @inputs.range, v for v in *@state]
{
:num