aboutsummaryrefslogtreecommitdiffstats
path: root/alv-lib/util.moon
blob: 55b0c4b60a0d6194ca30457516175e3427f167cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import Constant, Op, Input, T, sig, evt from require 'alv.base'

edge = Constant.meta
  meta:
    name: 'edge'
    summary: "Convert rising edges to bangs."
    examples: { '(edge bool)' }

  value: class extends Op
    setup: (inputs) =>
      value = sig.bool\match inputs
      super value: Input.hot value
      @out = T.bang\mk_evt!

    tick: =>
      now = @inputs.value!
      if now and not @state
        @out\set true
      @state = now

Constant.meta
  meta:
    name: 'util'
    summary: "Utility operators."

  value:
    :edge