fork download
  1. ; Written by TEttinger (tommy dot ettinger at gmail)
  2. ; Licensed under the EPL
  3. (ns lazybot.plugins.nest
  4. (:use [lazybot registry info]
  5. [clojure.string :only [join trim split]]
  6. [clojure.pprint :only [pprint]])
  7. (:import java.io.PrintWriter
  8. java.io.StringWriter))
  9.  
  10. (defplugin
  11. (:cmd
  12. "Calls two nested commands."
  13. #{"`" "!" "nest"}
  14. (fn [{:keys [com bot nick args channel] :as com-m}]
  15. (let [ sw (StringWriter.)
  16. com-2 (assoc com-m
  17. :com (ref (assoc-in @(get com-m :com) [:connection :sockout] (PrintWriter. sw))))
  18. get-inner #(re-find #"\[\s*(\S+)\s+([^\]]+)\]" (join " " (rest %)))]
  19.  
  20. (if (and (seq args)
  21. (find-command (:modules @bot) (first args))
  22. (seq (get-inner args))
  23. (find-command (:modules @bot) (nth (get-inner args) 1)))
  24. (do
  25. (let [inside-args (nth (get-inner args) 2)
  26. com-2 (assoc com-2
  27. :com (ref (assoc @(get com-2 :com) :args (split inside-args #"\s"))))]
  28.  
  29. ((:fn (find-command (:modules @bot) (nth (get-inner args) 1))) com-2 )
  30.  
  31. (.flush (get-in @(get com-2 :com) [:connection :sockout]))
  32. (.close (get-in @(get com-2 :com) [:connection :sockout]))
  33.  
  34. (let [new-args (.toString sw ) ; (get-in @com-2 [:com :connection :sockout]))
  35. com-a (assoc com-m
  36. :com (ref (assoc @(get com-m :com) :args (split new-args #"\s"))))]
  37. ((:fn (find-command (:modules @bot) (first args))) com-a )
  38.  
  39. ))))))))
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty