{-# OPTIONS_GHC -Wno-orphans #-}
module Procex.Shell.Labels where
import Data.Functor
import Data.Proxy (Proxy (..))
import GHC.OverloadedLabels (IsLabel (..))
import GHC.TypeLits (KnownSymbol, symbolVal)
instance (a ~ String, KnownSymbol l) => IsLabel l a where
fromLabel :: a
fromLabel =
Proxy l -> String
forall (n :: Symbol) (proxy :: Symbol -> *).
KnownSymbol n =>
proxy n -> String
symbolVal (Proxy l
forall k (t :: k). Proxy t
Proxy :: Proxy l) String -> (Char -> Char) -> String
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \case
Char
'_' -> Char
'-'
Char
x -> Char
x