Advertisement
Guest User

Untitled

a guest
May 2nd, 2020
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.27 KB | None | 0 0
  1. (defun getzips ()
  2.   (uiop:directory-files (merge-pathnames "zips/" (asdf:system-source-directory :fx))))
  3.  
  4. (defun substrn (path start end)
  5.   (let* ((s (namestring path))
  6.         (len (length s)))
  7.     (subseq s (- len start) (- len end))))
  8.  
  9. (defun getyear (path)
  10.   (parse-integer (substrn path 10 6)))
  11.  
  12. (defun getmonth (path)
  13.   (parse-integer (substrn path 6 4)))
  14.  
  15. (defun getym (path)
  16.   (parse-integer (substrn path 10 4)))
  17.  
  18. (defun getaskbid (path)
  19.   (substrn path 13 10))
  20.  
  21. (defun getsymbol (path)
  22.   (substrn path 22 16))
  23.  
  24.  
  25. (defun makefilehash (zips)
  26.   (let ((h (make-hash-table :test 'equal)))
  27.     (iter (for f in zips)
  28.       (let ((year (getyear f))
  29.             (month (getmonth f))
  30.             (symbol (getsymbol f))
  31.             (askbid (getaskbid f)))
  32.         (unless (gethash askbid h)
  33.           (setf (gethash askbid h) (make-hash-table :test 'equal)))
  34.         (unless (gethash symbol (gethash askbid h))
  35.           (setf (gethash symbol (gethash askbid h)) (make-hash-table :test 'equal)))
  36.         (unless (gethash year (gethash symbol (gethash askbid h)))
  37.           (setf (gethash year (gethash symbol (gethash askbid h))) (make-hash-table :test 'equal)))
  38.         (setf (gethash month (gethash year (gethash symbol (gethash askbid h)))) f)
  39.         ))
  40.     h)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement