Fixed order of arguments in `map-lines()` and relations functions/macros to be consistent with CL standard `map*()` functions (`function source" instead of `source function".)

Fortune for cl-utils's current commit: Middle blessing − 中吉
master
Avril 2 years ago
parent c90a17fd4d
commit 32590769af
Signed by: flanchan
GPG Key ID: 284488987C31F630

@ -121,7 +121,7 @@
while line do (funcall fi line))) while line do (funcall fi line)))
(defun map-lines (stream func &key (defun map-lines (func stream &key
(ignore nil) (ignore nil)
(applicator #'list) (applicator #'list)
(mapper #'mapcar) (mapper #'mapcar)
@ -151,31 +151,31 @@ The default behaviour (with `mapper' being `mapcar' and `applicator' being `list
while (and line (funcall continue line)) while (and line (funcall continue line))
collect (let ((line (funcall transform line))) collect (let ((line (funcall transform line)))
(when (funcall filter-single-line line) line)))))))) (when (funcall filter-single-line line) line))))))))
(defmacro map-file-lines (location func &rest kvs &key &allow-other-keys) (defmacro map-file-lines (func location &rest kvs &key &allow-other-keys)
"See `map-lines'(): Maps `func' over a file `location' instead of a stream." "See `map-lines'(): Maps `func' over a file `location' instead of a stream."
(let ((stream (gensym))) (let ((stream (gensym)))
`(with-open-file (,stream ,location :direction :input) `(with-open-file (,stream ,location :direction :input)
,(cons 'map-lines (append `(,stream ,func) kvs))))) ,(cons 'map-lines (append `(,func ,stream) kvs)))))
(defun mapcan-lines (stream func &rest kvs &key &allow-other-keys) (defun mapcan-lines (func stream &rest kvs &key &allow-other-keys)
"See `map-lines'(): Uses `nconc'() as the applicator and `mapcar'() as the mapper, which produces an output you'd expect from `mapcan'() The other key arguments can be specified according to the signature of `map-lines'()." "See `map-lines'(): Uses `nconc'() as the applicator and `mapcar'() as the mapper, which produces an output you'd expect from `mapcan'() The other key arguments can be specified according to the signature of `map-lines'()."
(apply #'map-lines (append (list stream func :applicator #'nconc :mapper #'mapcar) kvs))) (apply #'map-lines (append (list func stream :applicator #'nconc :mapper #'mapcar) kvs)))
(defmacro mapcan-file-lines (location func &rest kvs &key &allow-other-keys) (defmacro mapcan-file-lines (func location &rest kvs &key &allow-other-keys)
"See `mapcan-lines'(): Maps `func' over a file `location' instead of a stream." "See `mapcan-lines'(): Maps `func' over a file `location' instead of a stream."
(let ((stream (gensym))) (let ((stream (gensym)))
`(with-open-file (,stream ,location :direction :input) `(with-open-file (,stream ,location :direction :input)
,(cons 'mapcan-lines (append `(,stream ,func) kvs))))) ,(cons 'mapcan-lines (append `(,func ,stream) kvs)))))
(defun mapcon-lines (stream func &rest kvs &key &allow-other-keys) (defun mapcon-lines (func stream &rest kvs &key &allow-other-keys)
"See `map-lines'(): Uses `nconc'() as the applicator and `maplist'() as the mapper, which produces an output you'd expect from `mapcon'(). The other key arguments can be specified according to the signature of `map-lines'()." "See `map-lines'(): Uses `nconc'() as the applicator and `maplist'() as the mapper, which produces an output you'd expect from `mapcon'(). The other key arguments can be specified according to the signature of `map-lines'()."
(apply #'map-lines (append (list stream func :applicator #'nconc :mapper #'maplist) kvs))) (apply #'map-lines (append (list func stream :applicator #'nconc :mapper #'maplist) kvs)))
(defmacro mapcon-file-lines (location func &rest kvs &key &allow-other-keys) (defmacro mapcon-file-lines (func location &rest kvs &key &allow-other-keys)
"See `mapcon-lines'(): Maps `func' over a file `location' instead of a stream." "See `mapcon-lines'(): Maps `func' over a file `location' instead of a stream."
(let ((stream (gensym))) (let ((stream (gensym)))
`(with-open-file (,stream ,location :direction :input) `(with-open-file (,stream ,location :direction :input)
,(cons 'mapcon-lines (append `(,stream ,func) kvs))))) ,(cons 'mapcon-lines (append `(,func ,stream) kvs)))))
(defun strcat (&rest str) (defun strcat (&rest str)
"Concat all strings, if item is not string it is written to one." "Concat all strings, if item is not string it is written to one."

Loading…
Cancel
Save