module Data.BCP47.Trie
( Trie
, fromList
, fromNonEmpty
, singleton
, lookup
, match
, elem
, union
, unionWith
, mapMaybe
)
where
import Prelude hiding (elem, lookup, null)
import Data.BCP47
import Data.BCP47.Trie.Internal
import qualified Data.Map as Map
import Data.Maybe (isJust)
lookup :: BCP47 -> Trie a -> Maybe a
lookup :: BCP47 -> Trie a -> Maybe a
lookup BCP47
tag Trie a
trie = BCP47 -> Trie2 a -> Maybe a
forall a. BCP47 -> Trie2 a -> Maybe a
lookup2 BCP47
tag (Trie2 a -> Maybe a) -> Maybe (Trie2 a) -> Maybe a
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ISO639_1 -> Map ISO639_1 (Trie2 a) -> Maybe (Trie2 a)
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup (BCP47 -> ISO639_1
language BCP47
tag) (Trie a -> Map ISO639_1 (Trie2 a)
forall a. Trie a -> Map ISO639_1 (Trie2 a)
unLanguage Trie a
trie)
match :: BCP47 -> Trie a -> Maybe a
match :: BCP47 -> Trie a -> Maybe a
match BCP47
tag Trie a
trie = BCP47 -> Trie2 a -> Maybe a
forall a. BCP47 -> Trie2 a -> Maybe a
match2 BCP47
tag (Trie2 a -> Maybe a) -> Maybe (Trie2 a) -> Maybe a
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ISO639_1 -> Map ISO639_1 (Trie2 a) -> Maybe (Trie2 a)
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup (BCP47 -> ISO639_1
language BCP47
tag) (Trie a -> Map ISO639_1 (Trie2 a)
forall a. Trie a -> Map ISO639_1 (Trie2 a)
unLanguage Trie a
trie)
elem :: BCP47 -> Trie a -> Bool
elem :: BCP47 -> Trie a -> Bool
elem BCP47
tag = Maybe a -> Bool
forall a. Maybe a -> Bool
isJust (Maybe a -> Bool) -> (Trie a -> Maybe a) -> Trie a -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BCP47 -> Trie a -> Maybe a
forall a. BCP47 -> Trie a -> Maybe a
match BCP47
tag