Skip to content

Commit

Permalink
Add mpsAvoidHsKeyword in MkPersistSettings (#1480)
Browse files Browse the repository at this point in the history
* Add `mpsAvoidHsKeyword`

* Bump to 2.14.6.0

---------

Co-authored-by: Matt Parsons <parsonsmatt@gmail.com>
  • Loading branch information
ccycle and parsonsmatt committed Oct 3, 2023
1 parent 38654d9 commit e2b1a11
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
4 changes: 3 additions & 1 deletion persistent/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
* Always generates `SymbolToField "id"` instance
* [#1509](https://github.com/yesodweb/persistent/pull/1509)
* Provide `ViaPersistEntity` for defining `PathMultiPiece` for entity keys.

* [#1480](https://github.com/yesodweb/persistent/pull/1480)
* Add `mpsAvoidHsKeyword` in `MkPersistSettings`
*
## 2.14.5.2

* [#1513](https://github.com/yesodweb/persistent/pull/1513)
Expand Down
10 changes: 9 additions & 1 deletion persistent/Database/Persist/TH.hs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ module Database.Persist.TH
, mpsGeneric
, mpsPrefixFields
, mpsFieldLabelModifier
, mpsAvoidHsKeyword
, mpsConstraintLabelModifier
, mpsEntityHaddocks
, mpsEntityJSON
Expand Down Expand Up @@ -1062,6 +1063,12 @@ data MkPersistSettings = MkPersistSettings
-- Note: this setting is ignored if mpsPrefixFields is set to False.
--
-- @since 2.11.0.0
, mpsAvoidHsKeyword :: Text -> Text
-- ^ Customise function for field accessors applied only when the field name matches any of Haskell keywords.
--
-- Default: suffix "_".
--
-- @since 2.14.6.0
, mpsConstraintLabelModifier :: Text -> Text -> Text
-- ^ Customise the Constraint names using the entity and field name. The
-- result should be a valid haskell type (start with an upper cased letter).
Expand Down Expand Up @@ -1165,6 +1172,7 @@ mkPersistSettings backend = MkPersistSettings
, mpsGeneric = False
, mpsPrefixFields = True
, mpsFieldLabelModifier = (++)
, mpsAvoidHsKeyword = (++ "_")
, mpsConstraintLabelModifier = (++)
, mpsEntityHaddocks = False
, mpsEntityJSON = Just EntityJSON
Expand Down Expand Up @@ -3148,7 +3156,7 @@ mkRecordName mps prefix entNameHS fieldNameHS =
unFieldNameHS fieldNameHS

avoidKeyword :: Text -> Text
avoidKeyword name = if name `Set.member` haskellKeywords then name ++ "_" else name
avoidKeyword name = if name `Set.member` haskellKeywords then mpsAvoidHsKeyword mps name else name

haskellKeywords :: Set.Set Text
haskellKeywords = Set.fromList
Expand Down

0 comments on commit e2b1a11

Please sign in to comment.