diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2020-03-21 19:06:18 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2020-03-21 19:06:18 +0000 |
| commit | e83df1af2cdad8c2d61ba790a96875cd260eceaf (patch) | |
| tree | 5766654329675bd5259be772bc2537c7fdd8ab1c /lib/osc.moon | |
| parent | docs/guide: document supported interpreter versions (diff) | |
| download | alive-e83df1af2cdad8c2d61ba790a96875cd260eceaf.tar.gz alive-e83df1af2cdad8c2d61ba790a96875cd260eceaf.zip | |
new meta/doc system
Diffstat (limited to 'lib/osc.moon')
| -rw-r--r-- | lib/osc.moon | 102 |
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 |
