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