jasalt/phel-bencode

Library for converting Phel datastructures to and from Bencode.

dev-master 2025-03-10 12:15 UTC

This package is not auto-updated.

Last update: 2025-03-25 09:01:15 UTC


README

Status: seems to roughly work, but testing needs to be done

Phel library for converting Phel datastructures to and from bencode using arokettu/bencode.

Some code and repository layout is based on mabasic/phel-json and builtin phel\json namespace.

Overview

Library wraps Arokettu\Bencode\Bencode encode and decode methods.

  • encode: Phel datastructures and basic types are converted to to PHP data structures before calling (php/:: Bencode (encode data)) using phel->php.

  • decode: Bencode strings are decoded using (php/:: Bencode (decode data)) and converted to Phel data structures using php->phel function.

Functionality of phel->php and php->phel doing "deep" conversion is basically taken from functions in phel\json while they are renamed.

Installation

Require with Composer into Phel project composer require jasalt/phel-bencode.

Usage

REPL example:

(require jasalt\bencode :as bencode)

(bencode/encode ["foo" {:bar "baz"}])
# => l3:food3:bar3:bazee

(bencode/decode "l3:food3:bar3:bazee")
# => ["foo" {:bar "baz"}]  # quotes added around strings in REPL output here for convenience

For developers

TODO

composer install
composer test  # test runner works but json library tests are not converted

Contributing

Feel free to file issues in the repository or send pull requests.

License

Phel-json is open-source software licensed under the MIT license.