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
  forall a b. a -> (a -> b) -> b
& Lens' LensRules (Name -> [Name] -> Name -> [DefName])
lensField 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" forall a. [a] -> [a] -> [a]
++ (Char -> Char
toUpper Char
xforall a. a -> [a] -> [a]
:[Char]
xs))) ([Char] -> Name
mkName (Char -> Char
toLower Char
xforall a. a -> [a] -> [a]
:[Char]
xs))]
    [Char]
_        -> []