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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#!/usr/bin/env moon
import Scope from require 'alv'
import render, layout from require 'docs.gen.layout'
import section, h2, h3, ul, li, code from require 'docs.gen.dom'
import opairs from require 'alv.util'
export OUT, require
require = do
old_require = require
blacklist = {k, true for k in *{'osc', 'socket', 'system', 'luartmidi'}}
(mod, ...) ->
return {} if blacklist[mod]
old_require mod, ...
slurp = (file) ->
file = io.open file, 'r'
with file\read '*all'
file\close!
spit = (file, str) ->
file = io.open file, 'w'
file\write str
file\close!
{ OUT, module, name } = arg
name or= module
module = Scope.from_table require module
spit OUT, layout
title: "#{name} reference"
body: section {
h2 (code name), ' module reference'
h3 'index'
ul for key, node in opairs module.values
li render key, node.result, nil, true
h3 'details'
ul for key, node in opairs module.values
li render key, node.result
}
|