packages feed

data-accessor-template 0.2 → 0.2.1

raw patch · 2 files changed

+22/−17 lines, 2 filesdep +utility-htPVP ok

version bump matches the API change (PVP)

Dependencies added: utility-ht

API changes (from Hackage documentation)

Files

data-accessor-template.cabal view
@@ -1,5 +1,5 @@ Name:             data-accessor-template-Version:          0.2+Version:          0.2.1 License:          BSD3 License-File:     LICENSE Author:           Luke Palmer <lrpalmer@gmail.com>, Henning Thielemann <haskell@henning-thielemann.de>@@ -8,7 +8,7 @@ Package-URL:      http://code.haskell.org/data-accessor/ Category:         Data Build-Type:       Simple-Build-Depends:    base>=1.0, data-accessor >=0.1 && <0.3, template-haskell+Build-Depends:    base>=1.0, data-accessor >=0.1 && <0.3, utility-ht >=0.0.1 && <0.1, template-haskell Extensions:       CPP, TemplateHaskell Synopsis:         Utilities for accessing and manipulating fields of records Description:
src/Data/Accessor/Template.hs view
@@ -14,8 +14,9 @@ import Language.Haskell.TH.Syntax   -- (Q, Exp(VarE), Pat(VarP), Dec(ValD), Name(Name), mkOccName, occString, reify, ) -import Data.Maybe (catMaybes)-import Control.Monad (guard, liftM, when)+import Data.List.HT (viewR, )+import Data.Maybe (catMaybes, )+import Control.Monad (liftM, when, )   @@ -50,13 +51,14 @@ -- And will generate accessors when TypeName was declared -- using @data@ or @newtype@. deriveAccessors :: Name -> Q [Dec]-deriveAccessors n = nameDeriveAccessors n transformName-    where-    transformName s = do-        guard $ not (null s)-        guard $ last s == '_'-        return $ init s+deriveAccessors n = nameDeriveAccessors n stripUnderscore +stripUnderscore :: String -> Maybe String+stripUnderscore s = do+    (stem,'_') <- viewR s+    return $ stem++ -- |@nameDeriveAccessors n f@ where @n@ is the name of a data type -- declared with @data@ and @f@ is a function from names of fields -- in that data type to the name of the corresponding accessor. If@@ -90,7 +92,7 @@      makeAccs :: Con -> Q [Dec]     makeAccs (RecC _ vars) =-        liftM catMaybes $ mapM (\ (name,_,_) -> makeAccFromName name) vars+        liftM (concat . catMaybes) $ mapM (\ (name,_,ftype) -> makeAccFromName name ftype) vars     makeAccs (ForallC _ _ c) = makeAccs c     makeAccs _ = return [] @@ -99,23 +101,26 @@         n <- namer (occString occ)         return $ Name (mkOccName n) f -    makeAccFromName :: Name -> Q (Maybe Dec)-    makeAccFromName name = do+    makeAccFromName :: Name -> Type -> Q (Maybe [Dec])+    makeAccFromName name ftype = do         case transformName name of             Nothing -> return Nothing-            Just n -> liftM Just $ makeAcc name n+            Just n -> liftM Just $ makeAcc name ftype n      -- haddock doesn't grok TH #ifndef __HADDOCK__ -    makeAcc :: Name -> Name -> Q Dec-    makeAcc name accName = do+    makeAcc :: Name -> Type -> Name -> Q [Dec]+    makeAcc name ftype accName = do         body <- [|                  Accessor.fromSetGet                     ( \x s ->                         $( return $ RecUpdE (VarE 's) [(name, VarE 'x)] ) )                     ( $( return $ VarE name ) )                 |]-        return $ ValD (VarP accName) (NormalB body) []+        return+          [ SigD accName (AppT (AppT (ConT ''Accessor.T) (ConT t)) ftype)+          , ValD (VarP accName) (NormalB body) []+          ]  #endif