Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@gfredericks
Created September 1, 2016 01:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gfredericks/88fe53888f7e47ba5e72dd5b2674c0ac to your computer and use it in GitHub Desktop.
Save gfredericks/88fe53888f7e47ba5e72dd5b2674c0ac to your computer and use it in GitHub Desktop.
A clojure quine that draws itself in a swing buffer
;;
;; This file is clojure code that draws itself in a swing buffer
;; (https://twitter.com/pjstadig/status/771152863410188288)
;;
(defn draw-in-swing-buffer
[s]
(let [panel (doto (javax.swing.JPanel.)
(.setLayout (java.awt.BorderLayout.)))
frame (doto (javax.swing.JFrame.)
(.setSize 900 900)
(.setVisible true)
(.setContentPane panel)
(.setDefaultCloseOperation javax.swing.JFrame/EXIT_ON_CLOSE))
text-area (doto (javax.swing.JTextArea. 50 87)
(.setText s)
(.setEditable false)
(.setFont (java.awt.Font. java.awt.Font/MONOSPACED
java.awt.Font/BOLD
16)))
scroll-pane (javax.swing.JScrollPane. text-area)]
(.add panel scroll-pane java.awt.BorderLayout/CENTER)))
;; do the quiney part
(let [s ";;
;; This file is clojure code that draws itself in a swing buffer
;; (https://twitter.com/pjstadig/status/771152863410188288)
;;
(defn draw-in-swing-buffer
[s]
(let [panel (doto (javax.swing.JPanel.)
(.setLayout (java.awt.BorderLayout.)))
frame (doto (javax.swing.JFrame.)
(.setSize 900 900)
(.setVisible true)
(.setContentPane panel)
(.setDefaultCloseOperation javax.swing.JFrame/EXIT_ON_CLOSE))
text-area (doto (javax.swing.JTextArea. 50 87)
(.setText s)
(.setEditable false)
(.setFont (java.awt.Font. java.awt.Font/MONOSPACED
java.awt.Font/BOLD
16)))
scroll-pane (javax.swing.JScrollPane. text-area)]
(.add panel scroll-pane java.awt.BorderLayout/CENTER)))
;; do the quiney part
(let [s \"%s\"
whole-file (format s (clojure.string/replace s #\"[\\\\\\\"]\" #(str \\\\ %%)))]
(draw-in-swing-buffer whole-file))"
whole-file (format s (clojure.string/replace s #"[\\\"]" #(str \\ %)))]
(draw-in-swing-buffer whole-file))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment