From baf079fd7541b7439425423ffb30e907fe5b3b27 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Sun, 7 Aug 2022 22:10:18 +0200 Subject: [PATCH 1/4] fix typo to make it work for jvm --- src/tenlet/server.cljc | 63 +++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/src/tenlet/server.cljc b/src/tenlet/server.cljc index 9da6018..aa8b4bd 100644 --- a/src/tenlet/server.cljc +++ b/src/tenlet/server.cljc @@ -1,7 +1,8 @@ + (ns tenlet.server (:require [tenlet.decode :as decode]) - #?(:clj (import + #?(:clj (:import [java.net ServerSocket Socket SocketException] [java.io InputStreamReader OutputStreamWriter BufferedWriter] [java.nio.charset Charset]))) @@ -36,7 +37,7 @@ ITelnet (connect [o c] (swap! opts update :clients conj c)) - (write [o s] + (write [o s] (dorun (map #(write % s) (:clients @opts)))) (close [o] (dorun (map close (:clients @opts))) @@ -45,25 +46,25 @@ (deftype Client [socket ow opts] ITelnet (connect [o] (call @opts :connect o)) -#?(:clj +#?(:clj (write [o s] - (try - (.write ow (str s)) + (try + (.write ow (str s)) (.flush ow) (catch Exception e))) :cljs - (write [o s] - (try + (write [o s] + (try (.write socket (str s) "latin1") (catch :default e)))) - (input [o c] + (input [o c] (debug [c (int c)]) (let [code (decode/op (or (::code @opts) {}) c) out (:out code) -line (:line code) resize (:resize code)] (debug :code code) - (when resize + (when resize (call @opts :resize o resize) (swap! opts assoc ::code (dissoc code :resize))) (when out @@ -75,33 +76,33 @@ (if-not (or out -line resize) (swap! opts assoc ::code code)))) (line [o s] (call @opts :line o s)) - (close [o] - (swap! (.-opts (::server @opts)) update :clients + (close [o] + (swap! (.-opts (::server @opts)) update :clients #(-> % set (disj o) seq)) - #?(:clj - (try + #?(:clj + (try (.close socket) (call @opts :close o) (catch Exception e)) - :cljs - (try + :cljs + (try (.destroy socket) (catch :default e))))) (defn- new-connection [S c opts] - #?(:clj - (on-thread - (fn [] - (let [i (. c (getInputStream)) + #?(:clj + (on-thread + (fn [] + (let [i (. c (getInputStream)) o (. c (getOutputStream)) ir (new InputStreamReader i iso-latin-1) ow (new OutputStreamWriter o iso-latin-1) C (Client. c ow (atom opts))] (connect S C) (connect C) - ((fn [] + ((fn [] (when-not (.isClosed c) - (try + (try (input C (char (.read ir))) (catch java.lang.IllegalArgumentException e (close C)) @@ -113,20 +114,20 @@ (connect S C) (connect C) (.on c "data" (fn [d] (dorun (map #(input C %) (str d))))) - (.on c "close" - (fn [e] + (.on c "close" + (fn [e] (close C) (call @(.-opts C) :close C)))))) (defn create-server [port opts] - #?(:clj + #?(:clj (let [s (new ServerSocket port) S (Server. s (atom {})) opts (assoc opts ::server S)] - (on-thread - (fn [] + (on-thread + (fn [] (when-not (.isClosed s) - (try + (try (let [c (.accept s)] (new-connection S c opts)) (catch SocketException e @@ -136,8 +137,8 @@ (let [s ((.-createServer net)) S (Server. s (atom {})) opts (assoc opts ::server S)] - (.listen s port) - (.on s "connection" (fn [c] + (.listen s port) + (.on s "connection" (fn [c] (new-connection S c opts))) - (.on s "close" - (fn [e] (call opts :shutdown S))) S))) \ No newline at end of file + (.on s "close" + (fn [e] (call opts :shutdown S))) S))) From 308fc993bb93c7b5015494082c208d846bf37efe Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Sun, 7 Aug 2022 22:15:51 +0200 Subject: [PATCH 2/4] remove initial newline --- src/tenlet/server.cljc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/tenlet/server.cljc b/src/tenlet/server.cljc index aa8b4bd..a1fbd35 100644 --- a/src/tenlet/server.cljc +++ b/src/tenlet/server.cljc @@ -1,4 +1,3 @@ - (ns tenlet.server (:require [tenlet.decode :as decode]) From 0a248c504b96a047bb26cec02008540f07a34e46 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Thu, 18 Aug 2022 09:40:00 +0200 Subject: [PATCH 3/4] use deps.edn --- deps.edn | 3 +++ project.clj | 7 +++---- 2 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 deps.edn diff --git a/deps.edn b/deps.edn new file mode 100644 index 0000000..f56cb6a --- /dev/null +++ b/deps.edn @@ -0,0 +1,3 @@ +{:paths ["src" "resources"] + :deps {org.clojure/clojure {:mvn/version "1.8.0"} + selfsame/pdfn {:mvn/version "1.0.3"}}} diff --git a/project.clj b/project.clj index 26a703d..7d4d312 100644 --- a/project.clj +++ b/project.clj @@ -3,9 +3,8 @@ :url "http://github.com/selfsame/tenlet" :license {:name "The MIT License (MIT)" :url "https://github.com/selfsame/pdfn/blob/master/LICENSE"} - :dependencies [ - [org.clojure/clojure "1.8.0"] - [selfsame/pdfn "1.0.3"]] + ;; use deps from deps.edn + :plugins [[lein-tools-deps "0.4.5"]] :deploy-repositories [ ["clojars" { - :sign-releases false}]]) \ No newline at end of file + :sign-releases false}]]) From 61f555e9fdcfe7c841b0483f5303d58c03a43309 Mon Sep 17 00:00:00 2001 From: Phil Hofmann Date: Thu, 18 Aug 2022 09:55:01 +0200 Subject: [PATCH 4/4] move ns scratch to examples --- {src/tenlet => examples}/scratch.cljc | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) rename {src/tenlet => examples}/scratch.cljc (86%) diff --git a/src/tenlet/scratch.cljc b/examples/scratch.cljc similarity index 86% rename from src/tenlet/scratch.cljc rename to examples/scratch.cljc index 36c67da..c65a6fe 100644 --- a/src/tenlet/scratch.cljc +++ b/examples/scratch.cljc @@ -1,5 +1,5 @@ (ns tenlet.scratch - (:require + (:require [tenlet.server :refer [write close create-server DEBUG]] [tenlet.escape :as esc])) @@ -28,14 +28,14 @@ (defn player-resize [c m] (let [{:keys [w h]} m] (write c esc/CLR) - (dorun + (dorun (for [x (range (inc w)) y (range (inc h)) :when (or (#{2 (dec w)} x) (#{2 (dec h)} y))] - (do + (do (write c (esc/cursor x y)) - (write c (str - (esc/background (rand-nth (vec esc/color-names))) + (write c (str + (esc/background (rand-nth (vec esc/color-names))) (esc/code (rand-nth (vec esc/color-names))))) (write c (char (+ 33 (rand-int 93))))))) (write c (esc/cursor (int (/ w 2)) (int (/ h 2)))) @@ -44,15 +44,15 @@ (declare server) (defn shutdown! [] - (write server (str + (write server (str (esc/background :white) (esc/code :red) "\nSERVER SHUTTING DOWN\n" (esc/code :reset))) (close server)) -(if server (shutdown!)) +;; (if server (shutdown!)) -(def server +(def server (create-server 5071 { :connect #'new-player :line #'player-input @@ -65,14 +65,14 @@ -(for [i (range 20)] - (broad! - (esc/background (rand-nth (vec esc/color-names))) +(for [i (range 20)] + (broad! + (esc/background (rand-nth (vec esc/color-names))) (esc/code (rand-nth (vec esc/color-names))) 'selfsame (esc/code :reset))) '(for [i (range 20)] - (do + (do (broad! (cursor i i)) (broad! (code (rand-nth (vec color-names)))) (broad! "@"))) @@ -104,4 +104,4 @@ '(broad! CLR) ;hide cursor -'(broad! CSI HIDE) \ No newline at end of file +'(broad! CSI HIDE)