Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zachallaun/bencode
https://github.com/zachallaun/bencode
Last synced: 3 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/zachallaun/bencode
- Owner: zachallaun
- Created: 2012-11-11T21:14:58.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2015-04-24T16:38:52.000Z (over 9 years ago)
- Last Synced: 2024-10-11T19:20:04.352Z (27 days ago)
- Language: Clojure
- Homepage:
- Size: 230 KB
- Stars: 2
- Watchers: 4
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# bencode
Bencode encoding and decoding in Clojure.
## Installation
Add the following dependency to your `projecet.clj````
[com.zachallaun/bencode "0.1.1-SNAPSHOT"]
```## Usage
Import into your namspace```clj
(:require [bencode.bencode :as bencode])
``````clj
;; `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];; to decode from file
(decode (slurp filename :encoding "ISO-8859-1"));; `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.