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
42
43
44
45
46
47
48
49
50
51
52
|
#!/usr/bin/env moon
import Constant from require 'alv'
import opairs from require 'alv.util'
import render, render_meta, layout, autoref, subnav from require 'docs.gen.layout'
import h2, h3, p, ul, li, code from require 'docs.gen.dom'
import get_module from require 'docs.gen.shim'
import compile from require 'discount'
export OUT
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 = get_module module
raw = module!
get_description = (module) ->
m = module.meta
return '' unless m
buf = p m.summary
if m.description
buf ..= (compile autoref(m.description), 'nopants').body
buf
spit OUT, layout
title: "#{name} module reference"
body: table.concat {
subnav [a for a in *arg[4,]]
h2 (code name), ' module reference'
get_description module
h3 'index'
ul for key, node in opairs raw.values
li render key, node.result, nil, true
h3 'details'
ul for key, node in opairs raw.values
if node.result.meta and node.result.meta.name != key
continue
li render key, node.result
}, ''
|