aboutsummaryrefslogtreecommitdiffstats
path: root/docs/gen/module
blob: d726845b5f770628a29ff1c95ed3f6d6d740f130 (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
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
  }