elen

ELEN - Efficient Lexicographic Encoding of Numbers. For JavaScript.

Usage no npm install needed!

<script type="module">
  import elen from 'https://cdn.skypack.dev/elen';
</script>

README

ELEN - Efficient Lexicographic Encoding of Numbers

Build Status

Based on the paper by Peter Seymour.

Installation

$ npm install --save elen

Why would I want to use ELEN?

ELEN provides a way of textually representing numbers such that their natural order is preserved as a lexicographical order (i.e. alphabetical order) of their representations.

Imagine you need to represent numbers textually. A simple solution would be to simply call num.toString(). E.g.:

7..toString() // '7'
11..toString() // '11'

For many applications, this will suffice. However, notice that the natural order of the input numbers does not match the lexicographical order of the generated strings. I.e.:

[7, 11].sort((a, b) => a - b)    // [ 7, 11 ]
['7', '11'].sort()               // [ '11', '7' ]

That's where ELEN comes in. ELEN provides a way of textually representing numbers such that the following property is fulfilled:

assert.deepEqual(
  nums.map(elen.encode).sort().map(elen.decode),
  nums.sort((a, b) => a - b)
)

Usage

In Node.js

const elen = require('elen')

const encoded = [
  elen.encode(0),
  elen.encode(42),
  elen.encode(1),
  elen.encode(-10),
  elen.encode(5e100),
  elen.encode(-Infinity),
]

encoded.sort()

elen.decode(encoded[4]) // 42

Browser

Script Tag

<html>
  <head>
    ...
    <script src="https://cdn.rawgit.com/ealmansi/elen/master/dist/elen-1.0.10.min.js"></script>
  </head>
  ...
</html>

Documentation

Generate and Browse Locally

$ npm run docs

Online

Browse automatically generated jsdocs online.