aboutsummaryrefslogtreecommitdiffstats
path: root/alv-lib/util.moon
blob: 11c2c7eb82a29a1523a36fb3812fe8844062b37c (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) =>
      @out or= T.bang\mk_evt!
      value = sig.bool\match inputs
      super value: Input.hot value

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

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

  value:
    :edge