Git Product home page Git Product logo

bencode-1's Introduction

bencode

Bencode encoding and decoding in Clojure.

;; `decode` works with strings or byte-arrays, and returns a pair of the
;; parsed value and the remaining, unparsed characters. (These could be
;; passed back into `decode`.)

(decode "i1337e")
;;=> [1337 nil]

(decode "i1ei2e")
;;=> [1 (\i \2 \e)]

(decode (second *1))
;;=> [2 nil]

(decode "3:foo")
;;=> ["foo" nil]

(decode "li0ei1ei2ee")
;;=> [[0 1 2] nil]

(decode "d3:fooi1e3:bari2ee")
;;=> [{"foo" 1 "bar" 2} nil]

;; `encode` accepts a bencodable data structure and returns a byte-array.
;; For the sake of example, I'll show the return value as a string. This
;; conversion could be done with `(apply str (map char (encode xxx)))`.

(encode 1)
;;=> "i1e"

(encode -5)
;;=> "i-5e"

(encode "hello world")
;;=> "11:hello world"

(encode [1 2 3])
;;=> "li1ei2ei3ee"

(encode ["foo" "bar"])
;;=> "l3:foo3:bare"

(encode {"a" 1 "b" 2})
;;=> "d1:bi2e1:ai1ee"

(encode {:a 1 :b 2})
;;=> "d1:bi2e1:ai1ee"

(encode [{:a 1} {:b 2}])
;;=> "ld1:ai1eed1:bi2eee"

(decode (encode [1 2 3]))
;;=> [[1 2 3] nil]

License

Copyright © 2012 Zach Allaun

Distributed under the Eclipse Public License, the same as Clojure.

bencode-1's People

Contributors

zachallaun avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.