locators-0.2.4.4: lib/Data/Locator.hs
--
-- Human exchangable identifiers and locators
--
-- Copyright © 2011-2017 Operational Dynamics Consulting, Pty Ltd
--
-- The code in this file, and the program it is a part of, is
-- made available to you by its authors as open source software:
-- you can redistribute it and/or modify it under the terms of
-- the BSD licence.
--
-- This code originally licenced GPLv2. Relicenced BSD3 on 2 Jan 2014.
--
{-# LANGUAGE OverloadedStrings #-}
--
-- |
-- Maintainer: Andrew Cowie
-- Stability: Experimental
--
-- /Background/
--
-- We had a need for identifiers that could be used by humans.
--
-- The requirement to be able to say these over the phone complicates matters.
-- Most people have approached this problem by using a phonetic alphabet. The
-- trouble comes when you hear people saying stuff like \"A as in ... uh,
-- Apple?\" (should be Alpha, of course) and \"U as in ... um, what's a word
-- that starts with U?\" It gets worse. Ever been to a GPG keysigning? Listen
-- to people attempt to read out the digits of their key fingerprints. ...C 3 E
-- D 0 0 0 0 0 0 0 2 B D B D... \"Did you say \'C\' or \'D\'?\" and \"how
-- many zeros was that?\" Brutal.
--
-- So what we need is a symbol set where each digit is unambigious and doesn't
-- collide with the phonetics of another symbol. This package provides
-- Locator16, a set of 16 letters and numbers that, when spoken in English,
-- have unique pronounciation.
--
-- Also included is code to work in base 62, which is simply @[\'0\'@-@\'9\'@,
-- @\'A\'@-@\'Z\'@, and @\'a\'@-@\'z\']@. These are frequently used to express
-- short codes in URL redirectors; you may find them a more useful encoding for
-- expressing numbers than base 16 hexidecimal.
--
module Data.Locator
(
-- * Locator16
-- | This was somewhat inspired by the record locators used by the civilian
-- air travel industry, but with the restriction that the symbol set is
-- carefully chosen (aviation locators do heroic things like excluding
-- \'I\' but not much else) and, in the case of Locator16a, to not repeat
-- symbols. They're not a reversable encoding, but assuming you're just
-- generating identifiers and storing them somewhere, they're quite handy.
--
-- @TODO@ /link to paper with pronunciation study when published./
--
Locator(..),
English16(..),
fromLocator16,
toLocator16,
toLocator16a,
hashStringToLocator16a,
-- * Base62
toBase62,
fromBase62,
padWithZeros,
hashStringToBase62
) where
import Data.Locator.Hashes
import Data.Locator.Locators