packages feed

optics-th 0.1 → 0.2

raw patch · 3 files changed

+39/−13 lines, 3 filesdep ~optics-core

Dependency ranges changed: optics-core

Files

+ CHANGELOG.md view
@@ -0,0 +1,5 @@+# optics-th-0.2 (2019-10-18)+* Add `noPrefixFieldLabels` and `noPrefixNamer` to `Optics.TH`++# optics-th-0.1 (2019-09-02)+* Initial release
optics-th.cabal view
@@ -1,20 +1,23 @@ name:          optics-th-version:       0.1+version:       0.2 license:       BSD3 license-file:  LICENSE build-type:    Simple maintainer:    optics@well-typed.com author:        Andrzej Rybczak-cabal-version: >=1.10-tested-with:   ghc ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1+cabal-version: 1.24+tested-with:   ghc ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1, GHCJS ==8.4 synopsis:      Optics construction using TemplateHaskell category:      Data, Optics, Lenses description:-  This package is part of the @optics@ package family.  It provides machinery to-  construct optics using @TemplateHaskell@.+  This package is part of the @<https://hackage.haskell.org/package/optics optics>@+  package family.  It provides machinery to construct optics using @TemplateHaskell@.   .   See the @template-haskell-optics@ package for optics to work with @template-haskell@ types. +extra-doc-files:+  CHANGELOG.md+ bug-reports:   https://github.com/well-typed/optics/issues source-repository head   type:     git@@ -29,8 +32,8 @@   build-depends: base                   >= 4.9       && <5                , containers             >= 0.5.7.1   && <0.7                , mtl                    >= 2.2.2     && <2.3-               , optics-core            >= 0.1       && <1-               , template-haskell       >= 2.11      && <2.15+               , optics-core            >= 0.2       && <0.3+               , template-haskell       >= 2.11      && <2.16                , th-abstraction         >= 0.2.1     && <0.4                , transformers           >= 0.5       && <0.6 
src/Optics/TH.hs view
@@ -51,6 +51,7 @@   , lensField   , lensClass   -- * Common rules+  , noPrefixFieldLabels   , abbreviatedFieldLabels   , underscoreFields   , camelCaseFields@@ -60,6 +61,7 @@   , FieldNamer   , ClassyNamer   , DefName(..)+  , noPrefixNamer   , underscoreNoPrefixNamer   , lookingupNamer   , mappingNamer@@ -174,14 +176,14 @@ declareFieldLabels   = declareFieldLabelsWith   $ fieldLabelsRules-  & lensField .~ \_ _ n -> [TopName n]+  & lensField .~ noPrefixNamer  -- | Similar to 'makeFieldLabelsFor', but takes a declaration quote. declareFieldLabelsFor :: [(String, String)] -> DecsQ -> DecsQ declareFieldLabelsFor fields   = declareFieldLabelsWith   $ fieldLabelsRulesFor fields-  & lensField .~ \_ _ n -> [TopName n]+  & lensField .~ noPrefixNamer  -- Similar to 'makeFieldLabelsWith', but takes a declaration quote. declareFieldLabelsWith :: LensRules -> DecsQ -> DecsQ@@ -299,14 +301,14 @@ declareLenses   = declareLensesWith   $ lensRules-  & lensField .~ \_ _ n -> [TopName n]+  & lensField .~ noPrefixNamer  -- | Similar to 'makeLensesFor', but takes a declaration quote. declareLensesFor :: [(String, String)] -> DecsQ -> DecsQ declareLensesFor fields   = declareLensesWith   $ lensRulesFor fields-  & lensField .~ \_ _ n -> [TopName n]+  & lensField .~ noPrefixNamer  -- | 'declareLenses' with custom 'LensRules'. declareLensesWith :: LensRules -> DecsQ -> DecsQ@@ -417,7 +419,7 @@ declareClassy   = declareLensesWith   $ classyRules-  & lensField .~ \_ _ n -> [TopName n]+  & lensField .~ noPrefixNamer  -- | Similar to 'makeClassyFor', but takes a declaration quote. declareClassyFor ::@@ -425,7 +427,7 @@ declareClassyFor classes fields   = declareLensesWith   $ classyRulesFor (`Prelude.lookup`classes) fields-  & lensField .~ \_ _ n -> [TopName n]+  & lensField .~ noPrefixNamer  -- | Rules for making lenses and traversals that precompose another 'Lens'. classyRules :: LensRules@@ -660,6 +662,14 @@ ---------------------------------------- -- Common sets of rules +-- | Field rules for fields without any prefix. Useful for generation of field+-- labels when paired with @DuplicateRecordFields@ language extension so that no+-- prefixes for field names are necessary.+--+-- @since 0.2+noPrefixFieldLabels :: LensRules+noPrefixFieldLabels = fieldLabelsRules { _fieldToDef = noPrefixNamer }+ abbreviatedFieldLabels :: LensRules abbreviatedFieldLabels = fieldLabelsRules { _fieldToDef = abbreviatedNamer } @@ -703,6 +713,14 @@  ---------------------------------------- -- Namers++-- | A 'FieldNamer' that leaves the field name as-is. Useful for generation of+-- field labels when paired with @DuplicateRecordFields@ language extension so+-- that no prefixes for field names are necessary.+--+-- @since 0.2+noPrefixNamer :: FieldNamer+noPrefixNamer _ _ n = [TopName n]  -- | A 'FieldNamer' that strips the _ off of the field name, lowercases the -- name, and skips the field if it doesn't start with an '_'.