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 -> String nameBase Name n of Char '_':Char x:String xs -> [Name -> Name -> DefName MethodName (String -> Name mkName (String "Has" String -> String -> String forall a. [a] -> [a] -> [a] ++ (Char -> Char toUpper Char xChar -> String -> String forall a. a -> [a] -> [a] :String xs))) (String -> Name mkName (Char -> Char toLower Char xChar -> String -> String forall a. a -> [a] -> [a] :String xs))] String _ -> []