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 +5/−0
- optics-th.cabal +10/−7
- src/Optics/TH.hs +24/−6
+ 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 '_'.