From: Christophe Rhodes Date: Tue, 21 Oct 2014 16:48:11 +0000 (+0100) Subject: helpful `squeeze-parse-count' function X-Git-Url: http://christophe.rhodes.io/gitweb/?p=squeeze-el.git;a=commitdiff_plain;h=de098976a57d4787e15db20908402091b73ef5ba helpful `squeeze-parse-count' function use it in `squeeze-parse-players-line' --- diff --git a/squeeze.el b/squeeze.el index 1858614..267fe2d 100644 --- a/squeeze.el +++ b/squeeze.el @@ -358,20 +358,30 @@ (when startpos (squeeze-string-plistify string startpos (length string))))) +(defun squeeze-parse-count (string) + (save-match-data + (let ((countpos (string-match "count%3A\\([0-9]*\\)\\>" string))) + (if countpos + (string-to-number + (substring string (match-beginning 1) (match-end 1))) + (let ((kind + (progn (string-match "^\\([a-z]*\\) " string) + (substring string (match-beginning 1) (match-end 1))))) + (message "no count found in %s line" kind) + nil))))) + (defun squeeze-parse-players-line (string) - (let ((countpos (string-match " count%3A\\([0-9]\\) " string)) - (startpos (match-end 0))) - (unless countpos - (message "no count found in players line")) - (let ((count (string-to-number (substring string (match-beginning 1) (match-end 1)))) - result endpos) - (dotimes (i (1- count)) - (setq endpos (progn (string-match " connected%3A[0-1] " string startpos) - (match-end 0))) - (push (apply 'squeeze-make-player (squeeze-string-plistify string startpos endpos)) result) - (setq startpos endpos)) - (push (apply 'squeeze-make-player (squeeze-string-plistify string startpos (length string))) result) - result))) + (let ((count (squeeze-parse-count string)) + (startpos (string-match "playerindex" string)) + result endpos) + (dotimes (i (1- count)) + (setq endpos (progn (string-match " connected%3A[0-1] " string startpos) + (match-end 0))) + (push (apply 'squeeze-make-player (squeeze-string-plistify string startpos endpos)) result) + (setq startpos endpos)) + (push (apply 'squeeze-make-player (squeeze-string-plistify string startpos (length string))) result) + result)) + (defun squeeze-complete-command-at-point () (save-excursion