urbit-hob: Hoon-style atom manipulation and printing functions

[ library, mit, urbit ] [ Propose Tags ]

Here you can primarily find functions for dealing with the "patp" and "patq" phonetic bases used by Urbit. The @p encoding is used for naming ships, while the @q encoding is used for arbitrary data; they each uniquely represent an underlying natural number (or atom) in a memorable and pronounceable fashion.

The @p encoding is an obfuscated representation of an underlying atom, in particular, hence the "ob" in the library's name.

The Urbit.Ob module exposes two families of functions, patp and fromPatp, and then patq and fromPatq, for converting between representations. You can also render a Patp or Patq value as Text via the renderPatp and renderPatq functions, or parse them from Text via parsePatp and parsePatq.

Since @p values represent ships, some utilities for dealing with ships are also exposed. The clan and sein functions are useful for determining a ship's class and (default) parent, respectively.

Some quick examples:

>>> :set -XOverloadedStrings
>>> import qualified Urbit.Ob as Ob
>>> let nidsut = Ob.patp 15663360
>>> let marzod = Ob.patq (Ob.fromPatp nidsut)
>>> Ob.renderPatp nidsut
>>> Ob.renderPatq marzod
>>> Ob.fromPatp nidsut
>>> Ob.parsePatp "~nidsut-tomdun"
Right ~nidsut-tomdun
>>> Ob.clan nidsut
>>> Ob.sein nidsut
Versions [faq] 0.1.0, 0.1.1, 0.2.0, 0.3.0, 0.3.1, 0.3.2, 0.3.3
Dependencies base (>=4.7 && <6), bytestring (>=0.10 && <1), murmur3 (>=1.0 && <2), text (>=1.2 && <2), vector (>=0.12 && <1) [details]
License MIT
Copyright 2019 Jared Tobin
Author Jared Tobin
Maintainer jared@jtobin.io
Category Urbit
Home page https://github.com/urbit/urbit-hob
Bug tracker https://github.com/urbit/urbit-hob/issues
Source repo head: git clone https://github.com/urbit/urbit-hob
Uploaded by JaredTobin at 2020-06-04T08:06:53Z
Distributions NixOS:0.3.3
Downloads 1591 total (21 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2020-06-04 [all 1 reports]


[Index] [Quick Jump]



Build for release


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees