-(defun riece-ruby-exit-handler (name)
- (riece-ruby-inspect name)
- (let ((data (copy-sequence riece-ruby-data))
- (length (length data))
- (index 0))
- (while (< index length)
- (if (eq (aref data index) ?\n)
- (aset data index " ")))
- (riece-send-string
- (format "NOTICE %s :%s\r\n"
- (riece-identity-prefix
- (riece-ruby-property name 'riece-ruby-target))
- data))
- (riece-display-message
- (riece-make-message (riece-current-nickname)
- (riece-ruby-property name 'riece-ruby-target)
- data
- 'notice))
- (riece-ruby-clear name)))
-
-(defun riece-ruby-display-message-function (message)
- (if (and riece-ruby-enabled
- (riece-message-own-p message)
- (string-match "^,ruby\\s-+" (riece-message-text message)))
- (let ((name (riece-ruby-execute
- (substring (riece-message-text message)
- (match-end 0)))))
- (riece-ruby-set-property name
- 'riece-ruby-target
- (riece-message-target message))
- (riece-ruby-set-exit-handler name
- #'riece-ruby-exit-handler))))
-
-(defun riece-ruby-insinuate ()
- (add-hook 'riece-after-display-message-functions
- 'riece-ruby-display-message-function))
-
-(defun riece-ruby-enable ()
- (setq riece-ruby-enabled t))
-
-(defun riece-ruby-disable ()
- (setq riece-ruby-enabled nil))
+(defun riece-ruby-substitute-variables (program alist)
+ "Substitute symbols in PROGRAM by looking up ALIST.
+Return a string concatenating elements in PROGRAM."
+ (setq program (copy-sequence program))
+ (while alist
+ (let ((pointer program))
+ (while pointer
+ (setq pointer (memq (car (car alist)) program))
+ (if pointer
+ (setcar pointer (cdr (car alist))))))
+ (setq alist (cdr alist)))
+ (apply #'concat program))