Sigrid Solveig Haflínudóttirdocument the WIP built-in C compiler APIdfbaa901 month agoHistory
73 lines · 2.4 KB · Text
RawDownload
(defmacro (defdoc term . doc)  «Define documentation for a top level term.    Useful in cases where the documentation for a term has to be set   independent of the definition of said term, or an additional form   with the same name has to be documented.    If `term` is a function signature and `doc` is not specified, just   the signature will be included in the documentation, without   replacing any previously defined.    First `doc` argument is supposed to be a string with the description   of the term.  The following arguments are expected to be optional tag   pairings that provide grouping for multiple symbols (`:doc-group`),   "see also" references (`:doc-see`) and code examples (`:doc-example`).    Custom formatting lambda (`:doc-fmt`) may be used to process the   documentation string when it's printed with `(help ...)`. It's used   by `defstruct` to provide full constructor description in the output.»  :doc-example  «(defdoc (func arg (arg2 0))     «Return something about the `arg` and `arg2`.  This is a short      description.       This is the longer description, following the short one.\»     :doc-example     «(func 0)      ; ↳ T\»     :doc-example     «(func 1 3)      ; ↳ NIL\»     :doc-group stuff     :doc-see func2     :doc-fmt (λ (doc) doc)   (defdoc (func arg (:another-variant NIL)))»  :doc-group doc  (let* {[call (cons? term)]         [sym (or (and call (car term))                  term)]         [callvars (and call (cdr term))]         [doc (car (separate-doc-from-body (append doc '(NIL))))]}    (if call        `(set-doc! ',sym ',doc ',callvars)        `(set-doc! ',sym ',doc)))) (defmacro (doc-group group-name doc)  «Define documentation for a group.»  :doc-group doc  `(begin    (set-doc! (list 'doc 'group ',group-name) ,doc))) (doc-group doc  «Writing and reading documentation.») (load "../src/docs/array.sl")(load "../src/docs/cc.sl")(load "../src/docs/compress.sl")(load "../src/docs/debug.sl")(load "../src/docs/io.sl")(load "../src/docs/list.sl")(load "../src/docs/misc.sl")(load "../src/docs/number.sl")(load "../src/docs/ops.sl")(load "../src/docs/process.sl")(load "../src/docs/random.sl")(load "../src/docs/seq.sl")(load "../src/docs/string.sl")(load "../src/docs/struct.sl")(load "../src/docs/sys.sl")(load "../src/docs/table.sl")(load "../src/docs/time.sl")(load "../src/docs/type.sl")(load "../src/docs/vm.sl")

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t