comparison lisp/find-paths.el @ 5125:b5df3737028a ben-lisp-object

merge
author Ben Wing <ben@xemacs.org>
date Wed, 24 Feb 2010 01:58:04 -0600
parents 9c6ea1581159
children 308d34e9f07d
comparison
equal deleted inserted replaced
5124:623d57b7fbe8 5125:b5df3737028a
350 (cons (car directories) 350 (cons (car directories)
351 reverse-directories))) 351 reverse-directories)))
352 (setq directories (cdr directories))) 352 (setq directories (cdr directories)))
353 (reverse reverse-directories))) 353 (reverse reverse-directories)))
354 354
355 (defun paths-uniq-append (list-1 list-2)
356 "Append LIST-1 and LIST-2, omitting EQUAL duplicates."
357 (let ((reverse-survivors '()))
358 (while list-2
359 (if (null (member (car list-2) list-1))
360 (setq reverse-survivors (cons (car list-2) reverse-survivors)))
361 (setq list-2 (cdr list-2)))
362 (append list-1
363 (reverse reverse-survivors))))
364
365 (defun paths-filter (predicate list)
366 "Delete all matches of PREDICATE from LIST."
367 (let ((reverse-result '()))
368 (while list
369 (if (funcall predicate (car list))
370 (setq reverse-result (cons (car list) reverse-result)))
371 (setq list (cdr list)))
372 (nreverse reverse-result)))
373
374 (defun paths-decode-directory-path (string &optional drop-empties) 355 (defun paths-decode-directory-path (string &optional drop-empties)
375 "Split STRING at path separators into a directory list. 356 "Split STRING at path separators into a directory list.
376 Non-\"\" components are converted into directory form. 357 Non-\"\" components are converted into directory form.
377 If DROP-EMPTIES is non-NIL, \"\" components are dropped from the output. 358 If DROP-EMPTIES is non-NIL, \"\" components are dropped from the output.
378 Otherwise, they are left alone." 359 Otherwise, they are left alone."
382 (if (string-equal "" component) 363 (if (string-equal "" component)
383 component 364 component
384 (file-name-as-directory component))) 365 (file-name-as-directory component)))
385 components))) 366 components)))
386 (if drop-empties 367 (if drop-empties
387 (paths-filter #'(lambda (component) 368 (delete "" directories)
388 (null (string-equal "" component)))
389 directories)
390 directories))) 369 directories)))
391 370
392 ;;; find-paths.el ends here 371 ;;; find-paths.el ends here