module GitHub.Workflow.Command.Syntax.Name ( Name (..) , HasName (..) ) where import Control.Category import Control.Lens (Lens', simple) import Data.String (IsString) import Data.Text (Text) import Data.Text qualified as T import Data.Text.Encoding qualified as T import GitHub.Workflow.Command.Syntax.ToByteString import Prelude (Eq, Ord, Show) newtype Name = Name {Name -> Text text :: Text} deriving newtype (Name -> Name -> Bool (Name -> Name -> Bool) -> (Name -> Name -> Bool) -> Eq Name forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Name -> Name -> Bool == :: Name -> Name -> Bool $c/= :: Name -> Name -> Bool /= :: Name -> Name -> Bool Eq, Eq Name Eq Name => (Name -> Name -> Ordering) -> (Name -> Name -> Bool) -> (Name -> Name -> Bool) -> (Name -> Name -> Bool) -> (Name -> Name -> Bool) -> (Name -> Name -> Name) -> (Name -> Name -> Name) -> Ord Name Name -> Name -> Bool Name -> Name -> Ordering Name -> Name -> Name forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: Name -> Name -> Ordering compare :: Name -> Name -> Ordering $c< :: Name -> Name -> Bool < :: Name -> Name -> Bool $c<= :: Name -> Name -> Bool <= :: Name -> Name -> Bool $c> :: Name -> Name -> Bool > :: Name -> Name -> Bool $c>= :: Name -> Name -> Bool >= :: Name -> Name -> Bool $cmax :: Name -> Name -> Name max :: Name -> Name -> Name $cmin :: Name -> Name -> Name min :: Name -> Name -> Name Ord, Int -> Name -> ShowS [Name] -> ShowS Name -> String (Int -> Name -> ShowS) -> (Name -> String) -> ([Name] -> ShowS) -> Show Name forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Name -> ShowS showsPrec :: Int -> Name -> ShowS $cshow :: Name -> String show :: Name -> String $cshowList :: [Name] -> ShowS showList :: [Name] -> ShowS Show, String -> Name (String -> Name) -> IsString Name forall a. (String -> a) -> IsString a $cfromString :: String -> Name fromString :: String -> Name IsString) instance ToByteString Name where toByteStringBuilder :: Name -> Builder toByteStringBuilder = Text -> Builder T.encodeUtf8Builder (Text -> Builder) -> (Name -> Text) -> Name -> Builder forall b c a. (b -> c) -> (a -> b) -> a -> c forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (\Text x -> if Text -> Bool T.null Text x then Text "missing.command" else Text x) (Text -> Text) -> (Name -> Text) -> Name -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (.text) class HasName a where name :: Lens' a Name instance HasName Name where name :: Lens' Name Name name = (Name -> f Name) -> Name -> f Name forall {k2} (a :: k2) k3 (p :: k2 -> k3 -> *) (f :: k2 -> k3). p a (f a) -> p a (f a) simple