2 (require 'riece-message)
4 (defvar riece-eval-ruby-enabled nil)
6 (defconst riece-eval-ruby-description
7 "Evaluate an input string as Ruby program.")
9 (defun riece-eval-ruby-exit-handler (name)
10 (riece-ruby-inspect name)
11 (let* ((data (copy-sequence riece-ruby-data))
12 (length (length data))
14 (while (< index length)
15 (if (eq (aref data index) ?\n)
17 (setq index (1+ index)))
19 (format "NOTICE %s :%s\r\n"
20 (riece-identity-prefix
21 (riece-ruby-property name 'riece-eval-ruby-target))
23 (riece-display-message
24 (riece-make-message (riece-current-nickname)
25 (riece-ruby-property name 'riece-eval-ruby-target)
29 (defun riece-eval-ruby-display-message-function (message)
30 (if (and riece-eval-ruby-enabled
31 (riece-message-own-p message)
32 (string-match "^,ruby\\s-+" (riece-message-text message)))
33 (let ((name (riece-ruby-execute
34 (substring (riece-message-text message)
36 (riece-ruby-set-property name
37 'riece-eval-ruby-target
38 (riece-message-target message))
39 (riece-ruby-set-exit-handler name
40 #'riece-eval-ruby-exit-handler))))
42 (defun riece-eval-ruby-insinuate ()
43 (add-hook 'riece-after-display-message-functions
44 'riece-eval-ruby-display-message-function))
46 (defun riece-eval-ruby-enable ()
47 (setq riece-eval-ruby-enabled t))
49 (defun riece-eval-ruby-disable ()
50 (setq riece-eval-ruby-enabled nil))
52 (provide 'riece-eval-ruby)