#!/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 }