changeset 698: | 96958d3eb5b0 |
parent: | c40d2a41d7ce |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: | -rw-r--r-- |
description: | fixes |
137 | 1 | ;;; lib/doc/file.lisp --- File Documentation |
2 | ||
262 | 3 | ;; Support for inline documentation and comments in source-code files. |
4 | ||
5 | ;;; Commentary: |
|
6 | ||
7 | ;; As of [2024-04-04] we aren't considering any other files besides |
|
8 | ;; Lisp source-code. We'll eventually open the door to other langs via |
|
9 | ;; SYN, and finally integrate with other types of |
|
10 | ;; documentation-specific files like READMEs. |
|
11 | ||
12 | ;;;; Lisp Files |
|
13 | ||
14 | ;; We determine the flavor of Lisp used in a source file by the file |
|
15 | ;; extension. In reality we're only dealing with two flavors: Common |
|
16 | ;; Lisp and Emacs Lisp. |
|
17 | ||
18 | ;; The way we treat them at the read stage is almost identical. The |
|
19 | ;; only difference being that Emacs Lisp does not support the inline |
|
20 | ;; comment syntax '#| some comment |#'. |
|
21 | ||
22 | ;; In any case the idea is to do 'something' with comments instead of |
|
23 | ;; getting rid of them at read-time. |
|
24 | ||
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
395
diff
changeset
|
25 | ;;;; Headers |
262 | 26 | |
27 | ;; Special consideration is given to source-code 'header' blocks. In |
|
28 | ;; our own code, we use them as much as possible but haven't been |
|
29 | ;; using them to their full potential just yet. |
|
30 | ||
31 | ;; You will find most code, including this file begins with a block of |
|
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
395
diff
changeset
|
32 | ;; the following form: |
262 | 33 | |
34 | #| |
|
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
395
diff
changeset
|
35 | ;;; PATH --- SHORT-DESCRIPTION |
262 | 36 | |
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
395
diff
changeset
|
37 | ;; LONG-DESCRIPTION |
262 | 38 | |
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
395
diff
changeset
|
39 | ;;; Commentary: |
262 | 40 | |
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
395
diff
changeset
|
41 | ;; COMMENTARY |
262 | 42 | |
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
395
diff
changeset
|
43 | ;;; Code: |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
395
diff
changeset
|
44 | CODE |
262 | 45 | |# |
46 | ||
47 | ;; Note the difference in comment characters used between the |
|
48 | ;; lines. Headings start with 3, and the contents of those Headings |
|
49 | ;; start with 2. The first heading/section is an 'anonymous' or 'meta' |
|
50 | ;; section that should be considered required. All headings beneath it |
|
51 | ;; are 'named' sections. 'Code:' is the only required named section, |
|
52 | ;; so in the example above, we may exclude the 'Commentary:' section. |
|
53 | ||
54 | ;;;;; Headings |
|
55 | ||
56 | ;; We define headings according to the Emacs notion of the term, as |
|
57 | ;; used in outline-mode and org-mode. As mentioned, headings in source |
|
58 | ;; files begin with a minimum of 3 comment characters. For each |
|
59 | ;; additional comment character, the nested 'level' of the heading is |
|
60 | ;; increased and any non-header elements or header elements with a |
|
61 | ;; level greater than the top-level are nested inside that heading. |
|
62 | ||
63 | ;; 3 comment headings represent a level of 0. Any heading with a level |
|
64 | ;; > 0 is a Subheading. For example, we are in a subheading named |
|
65 | ;; 'Headings' of level 2, inside a subheading of level 1, inside a |
|
66 | ;; heading named 'Commentary'. |
|
137 | 67 | |
263
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
68 | ;;; Notes: |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
69 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
70 | ;; NOTE 2024-04-05: sb-impl::read-comment takes an 'ignore' second |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
71 | ;; arg, but the return value is always ignored anyways? |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
72 | |
137 | 73 | ;;; Code: |
74 | (in-package :doc) |
|
262 | 75 | |
76 | ;; asdf:source-file-type asdf:source-file-explicit-type |
|
263
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
77 | (defvar *source-file-types* nil) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
78 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
79 | (defmacro define-source-file* (type ext &optional opts shebangp &body body) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
80 | (with-gensyms (f) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
81 | (let ((rname (symbolicate "READ-" type "-SOURCE-FILE")) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
82 | (wname (symbolicate "WRITE-" type "-SOURCE-FILE")) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
83 | #+nil (kw (sb-int:keywordicate type))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
84 | `(progn |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
85 | (pushnew ',type *source-file-types*) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
86 | (defun ,rname (path) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
87 | (with-open-file (,f path) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
88 | (read ,f))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
89 | (defun ,wname (source path) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
90 | (with-open-file (,f path) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
91 | (write source :stream ,f))))))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
92 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
93 | (define-source-file* rust "rs") |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
94 | (define-source-file* shell "sh") |
395 | 95 | (define-source-file* makefile "mk") |
263
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
96 | (define-source-file* nushell "nu") |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
97 | (define-source-file* common-lisp "lisp") |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
98 | (define-source-file* emacs-lisp "el") |
395 | 99 | (define-source-file* scheme "scm") |
100 | (define-source-file* skel "sk") |
|
101 | (define-source-file* sxp "sxp") |
|
262 | 102 | |
103 | (defconstant +max-file-heading-level+ 8) |
|
263
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
104 | (defconstant +min-file-heading-level+ 3) |
262 | 105 | |
106 | (defclass file-heading () |
|
107 | ((name :initarg :name :type string) |
|
263
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
108 | (level :initform 0 :initarg :level :type (integer 0 #.+max-file-heading-level+)) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
109 | (contents :initarg :contents :type string))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
110 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
111 | (defun heading-line-p (string) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
112 | (uiop:string-prefix-p ";;;" string)) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
113 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
114 | (defun read-comment-line (stream) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
115 | "Read a comment line from STREAM. Returns two values: the uncommented |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
116 | string and a 'level' indicating how many comment characters were |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
117 | stripped. Note that this level is NOT the same as the heading level." |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
118 | (let ((level 0) (contents (organ::read-line stream))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
119 | (loop for c = (char contents level) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
120 | until (not (char= c #\;)) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
121 | do (incf level)) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
122 | (values |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
123 | (if (zerop level) contents (subseq contents (1+ level))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
124 | level))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
125 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
126 | (defun read-file-heading (stream) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
127 | (destructuring-bind (name level) (read-comment-line stream) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
128 | (make-instance 'file-heading :name name :level level :contents ""))) |
262 | 129 | |
130 | (defclass file-headline (file-heading) |
|
131 | ((summary :initarg :summary :type string) |
|
263
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
132 | (opts :initform nil :initarg :opts :type list))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
133 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
134 | (defun read-file-headline-description (stream) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
135 | "Read a headline description returning a string. Second value is the |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
136 | next heading line found or nil if EOF." |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
137 | (apply #'concatenate 'string |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
138 | (loop for l = (read-line stream) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
139 | until (heading-line-p l) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
140 | collect l))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
141 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
142 | (defun headline-values-p (string) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
143 | (let ((found (search " --- " string))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
144 | (values (subseq string 0 found) (when found (subseq string (+ found 5)))))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
145 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
146 | (defun split-headline-values (string) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
147 | "Split the headline in STRING into individual values." |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
148 | (multiple-value-bind (name rest) (headline-values-p string) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
149 | (if rest |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
150 | (multiple-value-bind (summary opts) (headline-values-p rest) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
151 | (values name summary opts)) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
152 | (values name nil nil)))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
153 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
154 | (defun read-file-headline (stream) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
155 | (let ((line (read-comment-line stream))) ;; throw out second value |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
156 | (multiple-value-bind (name summary opts) (split-headline-values line) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
157 | (make-instance 'file-headline |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
158 | :name name |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
159 | :summary summary |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
160 | :opts opts |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
161 | :level 0 |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
162 | :contents (read-file-headline-description stream))))) |
262 | 163 | |
164 | (defclass file-header () |
|
165 | ((headline :initarg :headline :type file-headline) |
|
166 | (headings :initarg :headings :type (array file-heading))) |
|
167 | (:documentation "A source-file header object containing a FILE-HEADLINE and array of |
|
168 | optional top-level FILE-HEADINGs.")) |
|
169 | ||
263
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
170 | (defun read-file-header (path) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
171 | "Read a FILE-HEADER from PATH which should be an INPUT-FILE-STREAM. |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
172 | |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
173 | File headers always appear at the very start of a file so the stream |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
174 | position is always assumed to be 0." |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
175 | (with-open-file (f path :if-does-not-exist :error) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
176 | (let ((hl (read-file-headline f))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
177 | (loop for l = (read-line f nil) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
178 | while l |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
179 | until (uiop:string-prefix-p ";;; Code:" l) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
180 | collect l into contents) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
181 | (make-instance 'file-header |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
182 | :headline hl |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
183 | :headings #() |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
184 | )))) |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
185 | |
262 | 186 | ;; (defmacro define-file-heading (type slots)) |
187 | ||
188 | (defclass file-documentation () |
|
189 | ((path :initarg :path :type pathname :accessor doc-path) |
|
190 | (header :initarg :header :type file-header) |
|
191 | (contents :initarg :contents :type sequence) |
|
192 | (locations :initarg :locations :type sequence)) |
|
193 | (:documentation "An object containing the header, contents, and relevant |
|
194 | locations of a source file. This object should be the result of a |
|
195 | function like COMPILE-FILE-DOCUMENTATION. Note that this object only |
|
196 | contains inline comments. Symbol documentation such as this one will |
|
197 | not be captured in instances of this object.")) |
|
198 | ||
199 | (defmethod print-object ((self file-documentation) stream) |
|
200 | (print-unreadable-object (self stream :type t) |
|
201 | (format stream "~A" (doc-path self)))) |
|
202 | ||
203 | (defun file-documentation (path) |
|
204 | "Return the FILE-DOCUMENTATION for PATH." |
|
205 | (make-instance 'file-documentation |
|
263
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
206 | :path path |
b7183bfd7107
add doc/readme.txt, more doc upgrades
Richard Westhaver <ellis@rwest.io>
parents:
262
diff
changeset
|
207 | :header (read-file-header path))) |
262 | 208 | |
209 | ;; asdf:source-file |