#!/usr/bin/env moon import Constant from require 'alv' import render, layout, subnav from require 'docs.gen.layout' import 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 const = Constant.wrap require module module = const\unwrap! spit OUT, layout title: "#{name} module reference" body: table.concat { subnav [a for a in *arg[4,]] 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 }, ''