Permalink
Please sign in to comment.
Showing
with
24 additions
and 181 deletions.
- +0 −2 .gitignore
- +3 −0 c/todo.txt
- +12 −1 c/vm.c
- +2 −0 doc/.gitignore
- +5 −9 doc/Makefile
- +0 −2 doc/make_methods.ngs
- +0 −165 doc/make_methods_markdown.ngs
- +2 −2 doc/ngs.1.md
| @@ -1,2 +1,4 @@ | ||
| +*.html | ||
| +*.1 | ||
| ngsmet.1.md | ||
| ngstyp.1.md |
14
doc/Makefile
| @@ -1,165 +0,0 @@ | ||
| -#!/usr/bin/env ngs | ||
| -{ | ||
| - # Autoload | ||
| - AWS | ||
| - ArgvMatcher | ||
| - Counter | ||
| - Iter | ||
| - KV | ||
| - Lock | ||
| - Res | ||
| - ResDef | ||
| - Stats | ||
| - Table | ||
| - Thread | ||
| - | ||
| - # Use anonymous function to exclude methods in this file | ||
| - # The inner functions are local | ||
| - F(){ | ||
| - | ||
| - # http://pandoc.org/MANUAL.html#pandocs-markdown | ||
| - characters_to_escape = '\\`*_{}[]()>#+-.!' | ||
| - | ||
| - | ||
| - # TODO: consider introducing Param type | ||
| - # TODO: improve escaping | ||
| - F escape_markdown(s:Str) s.map({ if A in characters_to_escape "\\$A" else A }).join('') | ||
| - F escape_markdown(s:Str) { | ||
| - guard s == '``' | ||
| - '```` `` ````' | ||
| - } | ||
| - F escape_markdown(s:Str) { | ||
| - guard s == '````' | ||
| - '```````` ```` ````````' | ||
| - } | ||
| - | ||
| - F param_to_str(p:Hash) { | ||
| - ret = "${p.name}:${p.type.name}" | ||
| - if 'splat' in p | ||
| - ret = "${p.splat}${ret}" | ||
| - if 'dflt' in p | ||
| - ret = "${ret}=${p.dflt}" | ||
| - ret | ||
| - } | ||
| - | ||
| - F print_doc_val(v:Str, pfx:Str) { | ||
| - echo("${pfx}${v}") | ||
| - } | ||
| - | ||
| - F doc_has_key(doc:Hash, k:Str) k in doc | ||
| - | ||
| - F doc_has_key(doc:Null, k:Str) false | ||
| - | ||
| - F print_doc_key(doc:Hash, pfx:Str, k:Str) { | ||
| - econd { | ||
| - k not in doc | ||
| - null | ||
| - doc[k] is Arr | ||
| - doc[k].each(print_doc_val, pfx) | ||
| - doc[k] is Str | ||
| - print_doc_val(doc[k], pfx) | ||
| - } | ||
| - } | ||
| - | ||
| - F print_doc_key(doc:Null, pfx:Str, k:Str) null | ||
| - | ||
| - F print_method_doc(name:Str, value) { | ||
| - guard value is Arr | ||
| - guard value.all((is), Fun) | ||
| - not(value) returns null | ||
| - if ARGV[0] == 'methods' { | ||
| - echo("* **${name.escape_markdown()}**") | ||
| - } | ||
| - if ARGV[0] == 'types' { | ||
| - echo("") | ||
| - echo(" *Constructors*") | ||
| - echo("") | ||
| - } | ||
| - value.each(F(method_implementation) { | ||
| - local doc = method_implementation.attrs().doc | ||
| - params_strings = method_implementation.params().map(param_to_str) | ||
| - header_name = escape_markdown("${name}(${params_strings.join(', ')})") | ||
| - echo(" * $header_name") | ||
| - if doc_has_key(doc, "") { | ||
| - echo("") | ||
| - echo(" *Description*") | ||
| - echo("") | ||
| - print_doc_key(doc, " ", "") | ||
| - echo("") | ||
| - } | ||
| - # if method_implementation.params().any(F(param) {doc_has_key(doc, param.name)}) { | ||
| - # echo("### Parameters") | ||
| - # } | ||
| - method_implementation.params().each(F(param) { | ||
| - param_string = param_to_str(param) | ||
| - if doc_has_key(doc, param.name) { | ||
| - echo("") | ||
| - echo(" *Parameter* **${param_string}**") | ||
| - echo("") | ||
| - print_doc_key(doc, " ", param.name) | ||
| - } | ||
| - }) | ||
| - if doc_has_key(doc, '%RET') { | ||
| - echo("") | ||
| - echo(" *Returns*") | ||
| - echo("") | ||
| - print_doc_key(doc, " ", '%RET') | ||
| - } | ||
| - if doc_has_key(doc, '%EX') { | ||
| - echo("") | ||
| - echo(" *Example*") | ||
| - echo("") | ||
| - print_doc_key(doc, " ", '%EX') | ||
| - } | ||
| - echo("") | ||
| - }) | ||
| - } | ||
| - | ||
| - F print_type_doc(name:Str, value) { | ||
| - echo("* **${name.escape_markdown()}**") | ||
| - local doc = try value.attrs().doc | ||
| - not(doc) returns null | ||
| - if doc_has_key(doc, "") { | ||
| - echo("") | ||
| - echo(" *Description*") | ||
| - echo(" ") | ||
| - print_doc_key(doc, " ", "") | ||
| - echo("") | ||
| - } | ||
| - if doc is Hash { | ||
| - doc.keys().each(F(k) { | ||
| - if k != "" { | ||
| - echo("") | ||
| - echo(" *Field* **${k.escape_markdown()}**") | ||
| - echo("") | ||
| - print_doc_key(doc, " ", k) | ||
| - } | ||
| - }) | ||
| - } | ||
| - echo("") | ||
| - } | ||
| - | ||
| - F is_private_name(name:Str) name ~ Pfx('_') | ||
| - F is_public_name(name:Str) not(is_private_name(name)) | ||
| - | ||
| - g = globals() | ||
| - g.keys().filter(is_public_name).sort(lte).each(F(name) { | ||
| - value = g[name] | ||
| - cond { | ||
| - (ARGV[0] == 'methods') and (value is Arr) and value.all(is, Fun) | ||
| - print_method_doc(name, value) | ||
| - (ARGV[0] == 'types') and (value is Type) { | ||
| - print_type_doc(name, value) | ||
| - c = value.constructors | ||
| - if value is NormalType { | ||
| - # NormalType has special constructor which we can't handle for now | ||
| - # so skipping that one | ||
| - c = c[1..null] | ||
| - } | ||
| - print_method_doc(name, c) | ||
| - } | ||
| - } | ||
| - }) | ||
| - | ||
| - }() | ||
| -} |
0 comments on commit
58de7f8