aboutsummaryrefslogtreecommitdiffstats
path: root/extra
diff options
context:
space:
mode:
Diffstat (limited to 'extra')
-rw-r--r--extra/docs.moon6
-rw-r--r--extra/layout.moon58
2 files changed, 45 insertions, 19 deletions
diff --git a/extra/docs.moon b/extra/docs.moon
index d1553df..f43ecfa 100644
--- a/extra/docs.moon
+++ b/extra/docs.moon
@@ -1,6 +1,6 @@
import Value, Scope from require 'core'
import render, layout, autoref from require 'extra.layout'
-import section, h1, h2, p, ul, li, a, code, r from require 'extra.dom'
+import section, h1, h2, h3, p, ul, li, a, code, r from require 'extra.dom'
export OUT, BASE, require
{ OUT, command } = arg
@@ -33,6 +33,10 @@ spit OUT, switch command
title: "#{name} reference"
body: section {
h2 (code name), ' module reference'
+ h3 'index'
+ ul for key, res in opairs module.values
+ li render key, res.value, nil, true
+ h3 'details'
ul for key, res in opairs module.values
li render key, res.value
}
diff --git a/extra/layout.moon b/extra/layout.moon
index a3d67c8..dd309dc 100644
--- a/extra/layout.moon
+++ b/extra/layout.moon
@@ -1,26 +1,48 @@
-v = require 'core.version'
+version = require 'core.version'
+import compile from require 'discount'
+
+render_meta = (meta) ->
+ import p, code from require 'extra.dom'
+ contents = {}
+ if meta.examples
+ -- table.insert contents, h4 'signature'
+ examples = p table.concat [code e for e in *meta.examples], ' '
+ table.insert contents, examples
+ if meta.description
+ description = compile meta.description\match '^\n*(.+)\n*$'
+ table.insert contents, description.body
+
+ contents
-- render an ALV Value to a HTML string
-render = (name, value, prefix=nil) ->
+render = (name, value, prefix=nil, index=false) ->
import div, label, code, ul, li, i, a, pre from require 'extra.dom'
id = if prefix then "#{prefix}/#{name}" else name
type = i value.type
+ assert value.meta, "#{id} doesn't have any metadata!"
+ summary = assert value.meta.summary, "#{id} doesn't have a summary!"
- content = switch value.type
- when 'scope'
- ul for k, result in opairs value!.values
- li render k, result.value, id
- when 'opdef', 'builtin'
- pre value!.doc
- when 'num', 'str', 'bool'
- code tostring value!
-
- div {
- :id, class: 'def'
- label (a (code name), href: "##{id}"), ' (', type, '):'
- div content, class: 'nest'
- }
+ if index
+ div {
+ label (a (code name), href: "##{id}"), ' (', type, '):  – '
+ summary
+ }
+ else
+ content = switch value.type
+ when 'scope'
+ ul for k, result in opairs value!.values
+ li render k, result.value, id
+ else
+ render_meta value.meta
+
+ content.class = 'nest'
+ div {
+ :id, class: 'def'
+ label (a (code name), href: "##{id}"), ' (', type, '):  – '
+ summary
+ div content
+ }
-- generate a relative link
abs = (page) ->
@@ -78,7 +100,7 @@ layout = (opts) ->
span {
a 'alive', href: abs 'index.html'
' '
- code v.tag
+ code version.tag
' documentation'
}
div class: 'grow'
@@ -94,7 +116,7 @@ layout = (opts) ->
"alive documentation"
foot = footer div {
'alive '
- a (code v.tag), href: v.web
+ a (code version.tag), href: version.web
', generated '
os.date '!%Y-%m-%d %T'
}