(index ("current-docexpr" 0) ("docexpr" 190) ("parse-files" 480) ("with-working-directory" 1229) ("write-example" 1835) ("wiki-write-docexprs" 2647) ("wiki-write-docexprs" 2647) ("wiki-write-docexprs" 2647) ("wiki-write-docexprs" 2647) ("tex-write-docexprs" 5695) ("tex-write-docexprs" 5695) ("tex-write-docexprs" 5695))
(def (sig (parameter "current-docexpr → #f" (id current-docexpr))) (p "Enables communication with the parsing @-reader") (highlight scheme "(define current-docexpr (make-parameter #f))"))
(def (sig (record "docexpr" (id docexpr))) (p "Composite documentation and adherent expression") (dl (dt (tt "doc")) (dd "Documentation for the expression") (dt (tt "expr")) (dd "Expression surrounding the documentation")) (highlight scheme "(define-record-and-printer docexpr doc expr)"))
(def (sig (procedure "(parse-files . files) → Resultant docexprs" (id parse-files))) (p "Parse files into docexprs.") (dl (dt (tt "files")) (dd "Hahn-documented files to be parsed")) (highlight scheme "(define (parse-files . files)\n  (parameterize\n    ((docexprs (make-stack)))\n    (for-each\n      (lambda (file)\n        (with-input-from-file\n          file\n          (lambda ()\n            (let read-next ((expression (read)))\n              (if (not (eof-object? expression))\n                (begin\n                  (if (current-docexpr)\n                    (docexpr-expr-set! (stack-peek (docexprs)) expression))\n                  (current-docexpr #f)\n                  (read-next (read))))))))\n      files)\n    (docexprs)))"))
(def (sig (procedure "(with-working-directory directory thunk) → object" (id with-working-directory))) (p "Change to the " (tt "directory") ", execute " (tt "thunk") ", change back; returns the value of executing " (tt "thunk") ".") (dl (dt (tt "directory")) (dd "The directory to switch to") (dt (tt "thunk")) (dd "The thunk to execute")) (highlight scheme "(define (with-working-directory directory thunk)\n  (let ((original-directory (current-directory)))\n    (dynamic-wind\n      (lambda () (current-directory directory))\n      thunk\n      (lambda () (current-directory original-directory)))))"))
(def (sig (procedure "(write-example data description expressions) → unspecified" (id write-example))) (p "Renders an example, evaluating the expressions; attempts to " (tt "require-extension") " all modules seen so far.") (highlight scheme "(define (write-example data description expressions)\n  (display description)\n  (newline)\n  (let ((env (interaction-environment))\n        (modules (hash-table-ref/default data 'modules '())))\n    (for-each\n      (lambda (module) (eval `(require-extension ,module) env))\n      modules)\n    (for-each\n      (lambda (expression)\n        (fmt #t (columnar \" \" (with-width 78 (pretty expression))))\n        (fmt #t\n             (columnar \"  => \" (with-width 74 (pretty (eval expression env))))\n             \" \"\n             nl))\n      expressions)))"))
(def (sig (procedure "(wiki-write-docexprs docexprs) → unspecified" (id wiki-write-docexprs)) (procedure "(wiki-write-docexprs docexprs metafile) → unspecified" (id wiki-write-docexprs)) (procedure "(wiki-write-docexprs docexprs metafile repo) → unspecified" (id wiki-write-docexprs)) (procedure "(wiki-write-docexprs docexprs metafile repo fragment?) → unspecified" (id wiki-write-docexprs))) (p "Write the source-derived docexprs as svnwiki.") (dl (dt (tt "docexprs")) (dd "The parsed docexprs") (dt (tt "metafile")) (dd "The egg's .meta file") (dt (tt "repo")) (dd "The e.g. git-repo") (dt (tt "fragment?")) (dd "Whether to produce a document-fragment as opposed to a whole document (useful for debugging)")) (highlight scheme "(define wiki-write-docexprs\n  (case-lambda\n    ((docexprs) (wiki-write-docexprs docexprs #f))\n    ((docexprs metafile) (wiki-write-docexprs docexprs #f #f))\n    ((docexprs metafile repo) (wiki-write-docexprs docexprs #f #f #f))\n    ((docexprs metafile repo fragment?)\n     (let* ((document (make-document (make-hash-table) (make-stack)))\n            (parsed-docexprs (wiki-parse-docexprs document docexprs)))\n       (let ((data (hash-table-merge\n                     (hash-table-merge\n                       (document-data document)\n                       (parse-metafile metafile))\n                     (repo-metadata repo))))\n         (let ((author (hash-table-ref/default data 'author (default-author)))\n               (username\n                 (or (hash-table-ref/default data 'username #f)\n                     (hash-table-ref/default data 'user #f)\n                     (default-user)))\n               (email (hash-table-ref/default data 'email (default-email)))\n               (repository\n                 (or (hash-table-ref/default data 'repository #f)\n                     (hash-table-ref/default data 'repo #f)))\n               (title (let ((title (hash-table-ref/default data 'title #f))\n                            (egg (hash-table-ref/default data 'egg #f)))\n                        (or title egg (default-title))))\n               (description\n                 (or (hash-table-ref/default data 'description #f)\n                     (hash-table-ref/default data 'synopsis #f)\n                     (default-synopsis)))\n               (dependencies\n                 (or (hash-table-ref/default data 'depends #f)\n                     (hash-table-ref/default data 'needs #f)\n                     '()))\n               (license (hash-table-ref/default data 'license #f))\n               (versions (hash-table-ref/default data 'versions '())))\n           (unless fragment? (display (wiki-preamble title description)))\n           (stack-for-each parsed-docexprs (lambda (docexpr) (docexpr)))\n           (unless\n             fragment?\n             (display\n               (wiki-postamble\n                 author\n                 username\n                 license\n                 repository\n                 dependencies\n                 versions)))))))))"))
(def (sig (procedure "(tex-write-docexprs docexprs) → unspecified" (id tex-write-docexprs)) (procedure "(tex-write-docexprs docexprs metafile) → unspecified" (id tex-write-docexprs)) (procedure "(tex-write-docexprs docexprs metafile repo) → unspecified" (id tex-write-docexprs))) (p "Write the source-derived docexprs as LaTeX.") (dl (dt (tt "docexprs")) (dd "The parsed docexprs")) (highlight scheme "(define tex-write-docexprs\n  (case-lambda\n    ((docexprs) (tex-write-docexprs docexprs #f))\n    ((docexprs metafile) (tex-write-docexprs docexprs #f #f))\n    ((docexprs metafile repo)\n     (let* ((document (make-document (make-hash-table) (make-stack)))\n            (parsed-docexprs (tex-parse-docexprs document docexprs)))\n       (let ((data (document-data document)))\n         (write-template\n           tex-preamble\n           `((author unquote (hash-table-ref/default data 'author \"Anonymous\"))\n             (email unquote\n                    (hash-table-ref/default\n                      data\n                      'email\n                      \"anonymous@example.org\"))\n             (title unquote\n                    (hash-table-ref/default data 'title \"Documentation\")))))\n       (stack-for-each parsed-docexprs (lambda (docexpr) (docexpr)))\n       (display tex-footer)))))"))
