From 3242e0dab3a3df9de276018e3e2b8b4485047f5e Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Sun, 5 Apr 2020 11:46:55 +0200 Subject: [PATCH] README: bencode --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index 5f178e36..7790b655 100644 --- a/README.md +++ b/README.md @@ -710,6 +710,26 @@ This can be useful for talking to Docker: :RepoTags) ;;=> ["borkdude/babashka:latest"] ``` +## Bencode + +Babashka comes with the [nrepl/bencode](https://github.com/nrepl/bencode) +library which allows you to read and write bencode messages to a socket. A +simple example which gets the Clojure version from an nREPL server started with +`lein repl`: + +``` clojure +(ns nrepl-client + (:require [bencode.core :as b])) + +(let [s (java.net.Socket. "localhost" 65274) + out (.getOutputStream s) + in (java.io.PushbackInputStream. (.getInputStream s)) + _ (b/write-bencode out {"op" "describe"}) + clojure-version (get-in (b/read-bencode in) ["versions" "clojure" "version-string"])] + (String. clojure-version "UTF-8")) ;;=> "1.10.0" +``` + + ## Differences with Clojure Babashka is implemented using the [Small Clojure