figbus/elm-urbit-api/4.0.1

Urbit.Encoding.Phonemic

Encoding/Decoding module for urbit @p (scrambled) and @q (unscrambled) representations of numbers, in accordance with https://urbit.org/docs/hoon/reference/auras.

@p

Phonemic Base (Ship Names)

toPatp : Atom -> String

Try to convert an Atom into a @p encoded string, failing on negative numbers.

import Urbit.Encoding.Atom as Atom


Atom.fromInt 65536 |> Maybe.map toPatp
--> Just "~dapnep-ronmyl"
fromPatp : String -> Result (List DeadEnd) Atom

Try to convert a @p encoded string into an Atom, failing on improperly formatted strings.

import Urbit.Encoding.Atom as Atom
import BigInt


fromPatp "~sampel-palnet"
    |> Result.map (Atom.toBigInt >> BigInt.toString)
--> Ok "1624961343"
patpParser : Parser Atom

Parser for @p encoded strings.

@q

Phonemic Base, Unscrambled

toPatq : Atom -> String

Try to convert an Atom into a @q encoded string, failing on negative numbers.

import Urbit.Encoding.Atom as Atom


Atom.fromInt 5 |> Maybe.map toPatq
--> Just "~per"
fromPatq : String -> Result (List DeadEnd) Atom

Try to convert a @q encoded string into an Atom, failing on improperly formatted strings.

import Urbit.Encoding.Atom as Atom
import BigInt


fromPatq "~sampel"
    |> Result.map (Atom.toBigInt >> BigInt.toString)
--> Ok "1135"
patqParser : Parser Atom

Parser for @q encoded strings.