[cells-cvs] CVS cells/utils-kt
ktilton
ktilton at common-lisp.net
Sat Feb 16 05:04:57 UTC 2008
Update of /project/cells/cvsroot/cells/utils-kt
In directory clnet:/tmp/cvs-serv7833/utils-kt
Modified Files:
detritus.lisp
Log Message:
--- /project/cells/cvsroot/cells/utils-kt/detritus.lisp 2008/01/29 23:30:06 1.18
+++ /project/cells/cvsroot/cells/utils-kt/detritus.lisp 2008/02/16 05:04:56 1.19
@@ -147,27 +147,48 @@
#+allegro
-(defun line-count (path &optional show-files (depth 0))
+(defun line-count (path &optional show-files (max-depth most-positive-fixnum) no-semis (depth 0))
(cond
((excl:file-directory-p path)
- (when show-files
- (format t "~&~v,8t~a counts:" depth (pathname-directory path)))
- (let ((directory-lines
- (loop for file in (directory path :directories-are-files nil)
- for lines = (line-count file show-files (1+ depth))
- when (and show-files (plusp lines))
- do (bwhen (fname (pathname-name file))
- (format t "~&~v,8t~a ~,40t~d" (1+ depth) fname lines))
- summing lines)))
- (unless (zerop directory-lines)
- (format t "~&~v,8t~a ~,50t~d" depth (pathname-directory path) directory-lines))
- directory-lines))
+ (if (>= depth max-depth)
+ (progn
+ (format t "~&~v,8t~a dir too deep:" depth (pathname-directory path))
+ 0)
+ (progn
+ (when show-files
+ (format t "~&~v,8t~a counts:" depth (pathname-directory path)))
+ (let ((directory-lines
+ (loop for file in (directory path :directories-are-files nil)
+ for lines = (line-count file show-files max-depth no-semis (1+ depth))
+ when (and show-files (plusp lines))
+ do (bwhen (fname (pathname-name file))
+ (format t "~&~v,8t~a ~,40t~d" (1+ depth) fname lines))
+ summing lines)))
+ (unless (zerop directory-lines)
+ (format t "~&~v,8t~a ~,50t~d" depth (pathname-directory path) directory-lines))
+ directory-lines))))
((find (pathname-type path) '("cl" "lisp" "c" "h" "java")
:test 'string-equal)
- (source-line-count path))
+ (source-line-count path no-semis))
(t 0)))
+(defun source-line-count (path no-semis)
+ (with-open-file (s path)
+ (loop with block-rem = 0
+ for line = (read-line s nil nil)
+ for trim = (when line (string-trim '(#\space #\tab) line))
+ while line
+ when (> (length trim) 1)
+ do (cond
+ ((string= "#|" (subseq trim 0 2))(incf block-rem))
+ ((string= "|#" (subseq trim 0 2))(decf block-rem)))
+ unless (or (string= trim "")
+ (and no-semis (or (plusp block-rem)
+ (char= #\; (schar trim 0)))))
+ count 1)))
+
+#+save
(defun source-line-count (path)
(with-open-file (s path)
(loop with lines = 0
@@ -180,7 +201,8 @@
#+(or)
(line-count (make-pathname
:device "c"
- :directory `(:absolute "0dev")))
+ :directory `(:absolute "0Algebra" "Cells"))
+ nil 1 t)
#+(or)
(loop for d1 in '("cl-s3" "kpax" "puri-1.5.1" "s-base64" "s-http-client" "s-http-server" "s-sysdeps" "s-utils" "s-xml")
More information about the Cells-cvs
mailing list