module Test.Sandwich.Types.TestTimer.LensRules ( testTimerLensRules ) where import Data.Char (toLower, toUpper) import Language.Haskell.TH import Lens.Micro import Lens.Micro.TH testTimerLensRules :: LensRules testTimerLensRules :: LensRules testTimerLensRules = LensRules camelCaseFields LensRules -> (LensRules -> LensRules) -> LensRules forall a b. a -> (a -> b) -> b & ((Name -> [Name] -> Name -> [DefName]) -> Identity (Name -> [Name] -> Name -> [DefName])) -> LensRules -> Identity LensRules Lens' LensRules (Name -> [Name] -> Name -> [DefName]) lensField (((Name -> [Name] -> Name -> [DefName]) -> Identity (Name -> [Name] -> Name -> [DefName])) -> LensRules -> Identity LensRules) -> (Name -> [Name] -> Name -> [DefName]) -> LensRules -> LensRules forall s t a b. ASetter s t a b -> b -> s -> t .~ Name -> [Name] -> Name -> [DefName] underscoreNoPrefixNamer underscoreNoPrefixNamer :: Name -> [Name] -> Name -> [DefName] underscoreNoPrefixNamer :: Name -> [Name] -> Name -> [DefName] underscoreNoPrefixNamer Name _ [Name] _ Name n = case Name -> [Char] nameBase Name n of Char '_':Char x:[Char] xs -> [Name -> Name -> DefName MethodName ([Char] -> Name mkName ([Char] "Has" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ (Char -> Char toUpper Char xChar -> [Char] -> [Char] forall a. a -> [a] -> [a] :[Char] xs))) ([Char] -> Name mkName (Char -> Char toLower Char xChar -> [Char] -> [Char] forall a. a -> [a] -> [a] :[Char] xs))] [Char] _ -> []