language-spelling 0.1.1 → 0.1.2
raw patch · 5 files changed
+34/−7 lines, 5 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Language.Phonetic.Encoder: alphabet :: Encoder enc => Alphabet enc
- Language.Phonetic.Encoder: class Encoder enc where encode ll | all (flip member alph) ll = Just (encodeUnsafe ll) | otherwise = Nothing where alph = getAlphabet (alphabet :: Alphabet enc)
- Language.Phonetic.Encoder: encode :: (Encoder enc, ListLike full Char) => full -> Maybe (Code enc)
- Language.Phonetic.Encoder: encodeUnsafe :: (Encoder enc, ListLike full Char) => full -> Code enc
- Language.Phonetic.Soundex: data Soundex
- Language.Phonetic.Soundex: instance Encoder Soundex
- Language.Phonetic.Soundex: table :: Array Char (Either Bool Word8)
+ Language.Phonetic: alphabet :: Encoder enc => Alphabet enc
+ Language.Phonetic: class Encoder enc where encode ll | all (flip member alph) ll = Just (encodeUnsafe ll) | otherwise = Nothing where alph = getAlphabet (alphabet :: Alphabet enc)
+ Language.Phonetic: data Alphabet enc
+ Language.Phonetic: data Code enc
+ Language.Phonetic: data Soundex
+ Language.Phonetic: encode :: (Encoder enc, ListLike full Char) => full -> Maybe (Code enc)
+ Language.Phonetic: encodeUnsafe :: (Encoder enc, ListLike full Char) => full -> Code enc
Files
- Language/Phonetic.hs +12/−2
- Language/Phonetic/Encoder.hs +12/−1
- Language/Phonetic/Internal.hs +4/−0
- Language/Phonetic/Soundex.hs +2/−1
- language-spelling.cabal +4/−3
Language/Phonetic.hs view
@@ -1,7 +1,17 @@+-- | \"A phonetic algorithm is an algorithm for indexing of words by their+-- pronunciation\": <https://en.wikipedia.org/wiki/Phonetic_algorithm>.+--+-- Right now only a very rudimental one is provided, 'Soundex'; plus+-- 'Encoder', a generic interface. module Language.Phonetic- ( module Language.Phonetic.Encoder- , module Language.Phonetic.Soundex+ ( -- * Types+ Code+ , Alphabet+ , Encoder (..)+ -- * Algorithms+ , Soundex ) where import Language.Phonetic.Encoder import Language.Phonetic.Soundex+import Language.Phonetic.Internal
Language/Phonetic/Encoder.hs view
@@ -1,6 +1,9 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-}-module Language.Phonetic.Encoder (Encoder (..)) where+module Language.Phonetic.Encoder+ ( Code+ , Encoder (..)+ ) where import qualified Data.Set as Set @@ -10,10 +13,18 @@ import Language.Phonetic.Internal +-- | Type class for algorithms that encode words based on their pronunciation.+--+-- Minimal definition: 'alphabet', 'encodeUnsafe'. class Encoder enc where+ -- | The range of characters that the algorithm will accept alphabet :: Alphabet enc+ -- | Unchecked encoding: if characters not in 'alphabet' are in the word the+ -- behaviour is undefined. You should use 'encode'. encodeUnsafe :: ListLike full Char => full -> Code enc + -- | Safe 'encodeUnsafe': checks that all the characters are in 'alphabet'+ -- first. encode :: ListLike full Char => full -> Maybe (Code enc) encode ll | ListLike.all (flip Set.member alph) ll = Just (encodeUnsafe ll) | otherwise = Nothing
Language/Phonetic/Internal.hs view
@@ -1,8 +1,12 @@+-- | See the documentation for 'Language.Distance.Internal' to see why this+-- module is potentially dangerous. module Language.Phonetic.Internal where import Data.ByteString (ByteString) import Data.Set (Set) +-- | A wrapped 'ByteString'. newtype Code enc = Code {getCode :: ByteString} deriving (Eq, Show)+-- | A wrapped 'Set' 'Char'. newtype Alphabet enc = Alphabet {getAlphabet :: Set Char} deriving (Eq, Show)
Language/Phonetic/Soundex.hs view
@@ -1,5 +1,5 @@ {-# LANGUAGE EmptyDataDecls #-}-module Language.Phonetic.Soundex where+module Language.Phonetic.Soundex (Soundex) where import Data.Char (toUpper) import Data.Word (Word8)@@ -27,6 +27,7 @@ ('V', Right 1 ), ('W', Left False), ('X', Right 2 ), ('Y', Left True ), ('Z', Right 2 ) ] +-- | See <https://en.wikipedia.org/wiki/Soundex> for more info. data Soundex instance Encoder Soundex where
language-spelling.cabal view
@@ -1,6 +1,6 @@ Cabal-Version: >= 1.8 Name: language-spelling-Version: 0.1.1+Version: 0.1.2 Author: Francesco Mazzoli (f@mazzo.li) Maintainer: Francesco Mazzoli (f@mazzo.li) Build-Type: Simple@@ -59,11 +59,12 @@ Language.Distance.Search.BK, Language.Distance.Search.TST, Language.Phonetic,- Language.Phonetic.Encoder,- Language.Phonetic.Soundex, Language.Phonetic.Internal, Data.TST, Data.TSTSet++ Other-Modules: Language.Phonetic.Soundex,+ Language.Phonetic.Encoder Test-Suite benchmarks Type: exitcode-stdio-1.0