module Bookhound.Internal.Map where

import Data.Map (Map, elems, keys)


showMap :: String -> (String -> String) -> (a -> String) -> Map String a -> [String]
showMap :: String
-> (String -> String) -> (a -> String) -> Map String a -> [String]
showMap String
sep String -> String
showKey a -> String
showValue Map String a
mapping = (\(String
k, a
v) -> String -> String
showKey String
k String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
sep String -> String -> String
forall a. Semigroup a => a -> a -> a
<> a -> String
showValue a
v) ((String, a) -> String) -> [(String, a)] -> [String]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(String, a)]
tuples where
  tuples :: [(String, a)]
tuples = [String] -> [a] -> [(String, a)]
forall a b. [a] -> [b] -> [(a, b)]
zip (Map String a -> [String]
forall k a. Map k a -> [k]
keys Map String a
mapping) (Map String a -> [a]
forall k a. Map k a -> [a]
elems Map String a
mapping)