aboutsummaryrefslogtreecommitdiffstats
path: root/lib/osc.moon
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2020-03-21 19:06:18 +0000
committers-ol <s-ol@users.noreply.github.com>2020-03-21 19:06:18 +0000
commite83df1af2cdad8c2d61ba790a96875cd260eceaf (patch)
tree5766654329675bd5259be772bc2537c7fdd8ab1c /lib/osc.moon
parentdocs/guide: document supported interpreter versions (diff)
downloadalive-e83df1af2cdad8c2d61ba790a96875cd260eceaf.tar.gz
alive-e83df1af2cdad8c2d61ba790a96875cd260eceaf.zip
new meta/doc system
Diffstat (limited to 'lib/osc.moon')
-rw-r--r--lib/osc.moon102
1 files changed, 56 insertions, 46 deletions
diff --git a/lib/osc.moon b/lib/osc.moon
index 101fb11..fe4eae4 100644
--- a/lib/osc.moon
+++ b/lib/osc.moon
@@ -1,64 +1,74 @@
-import Op, Input, match from require 'core.base'
+import Op, Value, Input, match from require 'core.base'
import pack from require 'osc'
import dns, udp from require 'socket'
unpack or= table.unpack
-class connect extends Op
- @doc: "(osc/connect host port) - UDP remote definition"
+connect = Value.meta
+ meta:
+ name: 'connect'
+ summary: "Create a UDP remote."
+ examples: { '(osc/connect host port)' }
- new: => super 'udp/socket'
+ value: class extends Op
+ new: => super 'udp/socket'
- setup: (inputs) =>
- { host, port } = match 'str num', inputs
- super
- host: Input.value host
- port: Input.value port
+ setup: (inputs) =>
+ { host, port } = match 'str num', inputs
+ super
+ host: Input.value host
+ port: Input.value port
- tick: =>
- { :host, :port } = @unwrap_all!
- ip = dns.toip host
+ tick: =>
+ { :host, :port } = @unwrap_all!
+ ip = dns.toip host
- @out\set with sock = udp!
- \setpeername ip, port
+ @out\set with sock = udp!
+ \setpeername ip, port
-class send extends Op
- @doc: "(osc/send socket path val) - send a value via OSC
+send = Value.meta
+ meta:
+ name: 'send'
+ summary: "Send a value via OSC."
+ examples: { '(osc/send socket path val)' }
+ description: "sends a message only when `val` is dirty."
-sends a message only when val is dirty."
+ value: class extends Op
+ setup: (inputs) =>
+ { socket, path, value } = match 'udp/socket str any', inputs
+ super
+ socket: Input.cold socket
+ path: Input.cold path
+ value: Input.value value
- setup: (inputs) =>
- { socket, path, value } = match 'udp/socket str any', inputs
- super
- socket: Input.cold socket
- path: Input.cold path
- value: Input.value value
+ tick: =>
+ if @inputs.value\dirty!
+ { :socket, :path, :value } = @unwrap_all!
+ msg = if 'table' == type value
+ pack path, unpack value
+ else
+ pack path, value
+ socket\send msg
- tick: =>
- if @inputs.value\dirty!
- { :socket, :path, :value } = @unwrap_all!
- msg = if 'table' == type value
- pack path, unpack value
- else
- pack path, value
- socket\send msg
-
-class send_state extends Op
- @doc: "(osc/send! socket path val) - synchronize a value via OSC
+send_state = Value.meta
+ meta:
+ name: 'send'
+ summary: "Synchronize a value via OSC."
+ examples: { '(osc/send! socket path val)' }
+ description: "sends a message whenever any parameter is dirty."
-sends a whenever any parameter changes."
+ value: class extends Op
+ setup: (inputs) =>
+ { socket, path, value } = match 'udp/socket str any', inputs
+ super
+ socket: Input.value socket
+ path: Input.value path
+ value: Input.value value
- setup: (inputs) =>
- { socket, path, value } = match 'udp/socket str any', inputs
- super
- socket: Input.value socket
- path: Input.value path
- value: Input.value value
-
- tick: =>
- { :socket, :path, :value } = @unwrap_all!
- msg = pack path, value
- socket\send msg
+ tick: =>
+ { :socket, :path, :value } = @unwrap_all!
+ msg = pack path, value
+ socket\send msg
{
:connect