[cl-irc-cvs] r149 - trunk
ehuelsmann at common-lisp.net
ehuelsmann at common-lisp.net
Fri May 5 21:46:25 UTC 2006
Author: ehuelsmann
Date: Fri May 5 17:46:25 2006
New Revision: 149
Modified:
trunk/event.lisp
trunk/parse-message.lisp
trunk/protocol.lisp
trunk/utility.lisp
Log:
More efficient string manipulation. Also remove dependency on
#\Return character at the end of each line (making cl-irc windows EOL
translating lisp implementation compatible).
Modified: trunk/event.lisp
==============================================================================
--- trunk/event.lisp (original)
+++ trunk/event.lisp Fri May 5 17:46:25 2006
@@ -82,8 +82,8 @@
(mapcar #'(lambda (x)
(let ((eq-pos (position #\= x)))
(if eq-pos
- (list (subseq x 0 eq-pos)
- (subseq x (1+ eq-pos)))
+ (list (substring x 0 eq-pos)
+ (substring x (1+ eq-pos)))
(list x)))) capabilities)
(server-capabilities connection))
:initial-value '()))
Modified: trunk/parse-message.lisp
==============================================================================
--- trunk/parse-message.lisp (original)
+++ trunk/parse-message.lisp Fri May 5 17:46:25 2006
@@ -58,7 +58,7 @@
"Assuming `string' is a valid IRC message this function returns the
trailing-argument part of the message. Returns nil if the
trailing-argument part is not present."
- (cut-between string #\: '(#\Return) :start start))
+ (cut-between string #\: '(#\Return) :start start :cut-to-end t))
(defun combine-arguments-and-trailing (string &key (start 0))
(multiple-value-bind
Modified: trunk/protocol.lisp
==============================================================================
--- trunk/protocol.lisp (original)
+++ trunk/protocol.lisp Fri May 5 17:46:25 2006
@@ -687,7 +687,7 @@
(second (assoc "PREFIX"
(server-capabilities connection)
:test #'string=))))
- (subseq nickname 1)
+ (substring nickname 1)
nickname))
(defun normalize-nickname (connection string)
Modified: trunk/utility.lisp
==============================================================================
--- trunk/utility.lisp (original)
+++ trunk/utility.lisp Fri May 5 17:46:25 2006
@@ -115,10 +115,11 @@
:displaced-index-offset start)))
-(defun cut-between (string start-char end-chars &key (start 0) (cut-extra t))
+(defun cut-between (string start-char end-chars
+ &key (start 0) (cut-extra t) (cut-to-end nil))
"If `start-char' is not nil, cut string between `start-char' and any
of the `end-chars', from `start'. If `start-char' is nil, cut from
-`start' until any of the `end-chars'.
+`start' until any of the `end-chars' (or sting-end when `cut-to-end' is true).
If `cut-extra' is t, we will cut from start + 1 instead of just
`start'.
@@ -126,9 +127,10 @@
When there is no string matching the input parameters `start' and nil
will be returned, otherwise `end-position' and the string are
returned."
- (let ((end-position (position-if #'(lambda (char)
- (member char end-chars))
- string :start (1+ start)))
+ (let ((end-position (or (position-if #'(lambda (char)
+ (member char end-chars))
+ string :start (1+ start))
+ (when cut-to-end (length string))))
(cut-from (if cut-extra
(1+ start)
start)))
@@ -142,8 +144,11 @@
(substring string cut-from end-position))
(values start nil)))))
-(defun cut-before (string substring end-chars &key (start 0) (cut-extra t))
- "Cut `string' before `substring' or any of the `end-chars', from `start'.
+(defun cut-before (string substring end-chars
+ &key (start 0) (cut-extra t) (cut-to-end nil))
+ "Cut `string' before `substring' or any of the `end-chars', from `start',
+if none of substring or end-chars are found, until the end of the string
+when `cut-to-end' is true.
If `cut-extra' is t, we will cut from start + 1 instead of just
`start'.
@@ -157,9 +162,10 @@
(substring string (if (and cut-extra
(< start end-position))
(1+ start) start) end-position))
- (let ((end-position (position-if #'(lambda (x)
- (member x end-chars))
- string :start (1+ start)))
+ (let ((end-position (or (position-if #'(lambda (x)
+ (member x end-chars))
+ string :start (1+ start))
+ (when cut-to-end (length string))))
(cut-from (if cut-extra (1+ start) start)))
(if end-position
(values end-position
@@ -240,8 +246,8 @@
(let ((closing-paren-pos (position #\) prefix)))
(when (and (eq (elt prefix 0) #\( )
closing-paren-pos)
- (let ((prefixes (subseq prefix (1+ closing-paren-pos)))
- (modes (subseq prefix 1 closing-paren-pos)))
+ (let ((prefixes (substring prefix (1+ closing-paren-pos)))
+ (modes (substring prefix 1 closing-paren-pos)))
(when (= (length prefixes)
(length modes))
(values prefixes modes))))))
@@ -355,7 +361,7 @@
(do ((changes (pop arguments) (pop arguments)))
((null changes) (values ops nil))
(let* ((this-op (char changes 0))
- (modes (subseq changes 1))
+ (modes (substring changes 1))
(param-req (if (char= this-op #\+)
#'mode-desc-param-on-set-p
#'mode-desc-param-on-unset-p)))
More information about the cl-irc-cvs
mailing list