proquint

Identifiers that are readable, spellable, and pronounceable

Proquint

Identifiers that are readable, spellable, and pronounceable.

A "proquint" (see here) is a method of encoding an integer (or really, a sequence of 0 or more 16-bit words) as a sequence of 5-character, pronounceable strings. This is to facilitate easy communication of the identifier via "wetware" (read: human) channels.

Note that because proquint operates on 16-bit (2-byte) words, all the buffers you put into it will need to have lengths that are multiples of 2. You'll probably get awesome stack traces if you don't. Yay!

Code:

var proquint = require("proquint");
 
var id = proquint.encode(Buffer([0x01, 0x02, 0x03, 0x04]));
 
console.log(id);

Output:

fahab-hasab

Available via npm:

$ npm install proquint

Or via git:

$ git clone git://github.com/deoxxa/proquint.git node_modules/proquint

encode

Encodes a buffer to a proquint string.

proquint.encode(buffer);
var encoded = proquint.encode(Buffer([0x01, 0x02]));
 
console.log(encoded);

decode

Decodes a proquint string into a buffer.

proquint.decode(string);
var buffer = proquint.decode("fahab-hasab");
 
console.log(buffer);

Also see example.js.

// we're going to use the crypto module for getting random data 
var crypto = require("crypto");
 
// this is proquint! go proquint! 
var proquint = require("proquint");
 
// you can use whatever you like for this, as long as you can get the identifier 
// to fit into a buffer with a length that is a multiple of two 
var id = crypto.randomBytes(8);
 
// buffers are awesome - they let us get nice hex strings to read 
console.log(id.toString("hex"));
 
// here's how we encode a buffer 
var encoded = proquint.encode(id);
 
// this guy is a regular old string 
console.log(encoded);
 
// and this is the inverse! 
var decoded = proquint.decode(encoded);
 
// another buffer! 
console.log(decoded.toString("hex"));

Output:

1190b9a2591fb540
bikad-fokor-zihoj-bajir
1190b9a2591fb540

3-clause BSD. A copy is included with the source.