From 9bc0f5a4e3f7489d28cc9f204aca40ce76fdd20d Mon Sep 17 00:00:00 2001 From: Ringo Wantanabe Date: Wed, 13 Feb 2019 09:36:23 +0000 Subject: [PATCH] Hack fix export-struct, remove useless documentation --- utils.lisp | 70 ++++++++++++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/utils.lisp b/utils.lisp index 65d978d..77614ea 100644 --- a/utils.lisp +++ b/utils.lisp @@ -55,7 +55,6 @@ ;(export? val-if-or) (defun utils->system (input output &key (name :flan-utils) (description "Some random utilities") (author "Ringo ") (license "None")) - "Write this file to an ASDF system." (let ((this (cadddr (read-from-string (file-get-contents input)))) (sysdef `(asdf:defsystem ,name :description ,description @@ -73,37 +72,36 @@ (mapc #'(lambda (stmt) (write stmt :stream output-lisp :pretty nil)) this) (write sysdef :stream output-asd :case :downcase ))))) -(defun utils->create-for (utils for &key (name 'flan-utils) ) ;;; TODO: Make this work /for structs/ at all - "Export `utils' functions used in file into own file" - (let ((this (cadddr (read-from-string (file-get-contents utils)))) - (for (read-from-string (file-get-contents for)))) - (labels ((sieve (li) ;; find all `,name:' functions in list - (mapcan #'(lambda (part) - (if (atom part) - (if (cl-ppcre:scan (concatenate 'string "^" (write-to-string name) ":") - (write-to-string part)) - (list part) - nil) - (sieve part))) - li))) - (let ((syms (sieve for)) - (allowed-definitions '(defun - defmacro - defparameter))) ;;;; STRUCT - (labels ((find-func (sym-name l) ;;; TODO: here - (mapcan #'(lambda (part) - (when (not (atom part)) - (if (eql (cadr part) sym-name) ;; symbol found - (list part) - (when (eql (car part) 'export*?) ;; export*? - (find-func sym-name part))))) - l))) - (let ((defs (mapcan #'(lambda (sym) - (find-func (read-from-string (cadr (cl-ppcre:split (concatenate 'string "^" (write-to-string name) ":") (write-to-string sym)))) this)) - syms))) - (mapcan #'(lambda (def) - (when (member (car def) allowed-definitions))) - defs))))))) +;(defun utils->create-for (utils for &key (name 'flan-utils) ) ;;; TODO: Make this work /for structs/ at all +; (let ((this (cadddr (read-from-string (file-get-contents utils)))) +; (for (read-from-string (file-get-contents for)))) +; (labels ((sieve (li) ;; find all `,name:' functions in list +; (mapcan #'(lambda (part) +; (if (atom part) +; (if (cl-ppcre:scan (concatenate 'string "^" (write-to-string name) ":") +; (write-to-string part)) +; (list part) +; nil) +; (sieve part))) +; li))) +; (let ((syms (sieve for)) +; (allowed-definitions '(defun +; defmacro +; defparameter))) ;;;; STRUCT +; (labels ((find-func (sym-name l) ;;; TODO: here +; (mapcan #'(lambda (part) +; (when (not (atom part)) +; (if (eql (cadr part) sym-name) ;; symbol found +; (list part) +; (when (eql (car part) 'export*?) ;; export*? +; (find-func sym-name part))))) +; l))) +; (let ((defs (mapcan #'(lambda (sym) +; (find-func (read-from-string (cadr (cl-ppcre:split (concatenate 'string "^" (write-to-string name) ":") (write-to-string sym)))) this)) +; syms))) +; (mapcan #'(lambda (def) +; (when (member (car def) allowed-definitions))) +; defs))))))) (export*? ;;; --- actual (exported) code goes here -- @@ -215,13 +213,13 @@ strs) 0 -2)))) -(defun export-struct (struct &optional (symbols nil)) ;;XXX: Export make-* - (mapc #'export (symbol-match (strcat "^" (write-to-string struct) "-?") symbols))) +(defun export-struct (struct &optional (symbols nil)) ;;XXX: Exporting make-* is a hack and you should fix it + (mapc #'export (symbol-match (strcat "^(MAKE-)?" (write-to-string struct) "-?") symbols))) -(defun -export*-struct (structs &optional (symbols nil)) ;;XXX: Export make-* +(defun -export*-struct (structs &optional (symbols nil)) ;;XXX: Exporting make-* is a hack and you should fix it (mapc #'export (symbol-match (strcat - "^(" + "^(MAKE-)?(" (strjoin "|" (mapcar #'write-to-string structs)) ")-?") symbols)))