Source

lisp-random / make-api.lisp

;;; Generate APIs

(defun ensure-list (obj)
  "Make OBJ a list if it already isn't one."
  (if (listp obj)
      obj
      (list obj)))

(defun emit-comment (comment &optional (level 3))
  "Generate a comment string from the comment COMMENT at level LEVEL."
  (check-type level integer)
  (assert (plusp level)
          (level)
          "Comment level must be a positive integer. Given ~S."
          level)
  (concatenate 'string
               (make-string level :initial-element #\;)
               " "
               comment))

(defun emit-function (name args &key documentation)
  (when (and (stringp documentation)
             (string= documentation ""))
    (setf documentation nil))
  (let ((*print-case* :downcase))
    (with-output-to-string (s)
      (pprint 
       `(defun ,name ,args
          ,@(ensure-list documentation))
       s))))

(emit-comment
 "Create a comment containing STRING at depth level LEVEL."
 (string level -> list)
 
 )
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.