regular-web-0.1: src/Generics/Regular/Extras.hs
{-# LANGUAGE KindSignatures #-}
module Generics.Regular.Extras where
import Generics.Regular
import Data.Char (isAlpha, toUpper)
prodFst :: (:*:) l r t1 -> l t1
prodSnd :: (:*:) l r t1 -> r t1
prodFst (x :*: _) = x
prodSnd (_ :*: y) = y
-- | Capitalizes the first letter and filters out all the non-alpha characters.
humanReadable :: String -> String
humanReadable = filter isAlpha . capitalize
-- | Capitalize the first letter of the string.
capitalize :: String -> String
capitalize "" = ""
capitalize (c:cs) = toUpper c : cs
-- | Generates a human-readable version of a selector.
h :: Selector s => t s (f :: * -> *) r -> String
h = humanReadable . selName