+(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))
+