Cleanup
This commit is contained in:
parent
8e5bebc96f
commit
816ce0595e
@ -320,19 +320,16 @@ deriveJSON defaultOptions
|
||||
} ''SubmissionMode
|
||||
derivePersistFieldJSON ''SubmissionMode
|
||||
|
||||
instance PathPiece SubmissionMode where
|
||||
toPathPiece = (Map.fromList (zip universeF verbs) !)
|
||||
where
|
||||
verbs = [ "no-submissions"
|
||||
, "no-upload"
|
||||
, "no-unpack"
|
||||
, "unpack"
|
||||
, "correctors"
|
||||
, "correctors+no-upload"
|
||||
, "correctors+no-unpack"
|
||||
, "correctors+unpack"
|
||||
]
|
||||
fromPathPiece = finiteFromPathPiece
|
||||
finitePathPiece ''SubmissionMode
|
||||
[ "no-submissions"
|
||||
, "no-upload"
|
||||
, "no-unpack"
|
||||
, "unpack"
|
||||
, "correctors"
|
||||
, "correctors+no-upload"
|
||||
, "correctors+no-unpack"
|
||||
, "correctors+unpack"
|
||||
]
|
||||
|
||||
data SubmissionModeDescr = SubmissionModeNone
|
||||
| SubmissionModeCorrector
|
||||
@ -342,15 +339,12 @@ data SubmissionModeDescr = SubmissionModeNone
|
||||
instance Universe SubmissionModeDescr
|
||||
instance Finite SubmissionModeDescr
|
||||
|
||||
instance PathPiece SubmissionModeDescr where
|
||||
toPathPiece = (Map.fromList (zip universeF verbs) !)
|
||||
where
|
||||
verbs = [ "no-submissions"
|
||||
, "correctors"
|
||||
, "users"
|
||||
, "correctors+users"
|
||||
]
|
||||
fromPathPiece = finiteFromPathPiece
|
||||
finitePathPiece ''SubmissionModeDescr
|
||||
[ "no-submissions"
|
||||
, "correctors"
|
||||
, "users"
|
||||
, "correctors+users"
|
||||
]
|
||||
|
||||
classifySubmissionMode :: SubmissionMode -> SubmissionModeDescr
|
||||
classifySubmissionMode (SubmissionMode False Nothing ) = SubmissionModeNone
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
module Utils.PathPiece
|
||||
( finiteFromPathPiece
|
||||
, nullaryToPathPiece
|
||||
, nullaryPathPiece
|
||||
, nullaryPathPiece, finitePathPiece
|
||||
, splitCamel
|
||||
, camelToPathPiece, camelToPathPiece'
|
||||
, tuplePathPiece
|
||||
@ -16,6 +16,8 @@ import Data.Universe
|
||||
import qualified Data.Text as Text
|
||||
import qualified Data.Char as Char
|
||||
|
||||
import qualified Data.Map as Map
|
||||
|
||||
import Numeric.Natural
|
||||
|
||||
import Data.List (foldl)
|
||||
@ -44,6 +46,16 @@ nullaryPathPiece nullaryType mangle =
|
||||
, funD 'fromPathPiece
|
||||
[ clause [] (normalB [e|finiteFromPathPiece|]) [] ]
|
||||
]
|
||||
|
||||
finitePathPiece :: Name -> [Text] -> DecsQ
|
||||
finitePathPiece finiteType verbs =
|
||||
pure <$> instanceD (cxt []) [t|PathPiece $(conT finiteType)|]
|
||||
[ funD 'toPathPiece
|
||||
[ clause [] (normalB [|(Map.fromList (zip universeF verbs) !)|]) [] ]
|
||||
, funD 'fromPathPiece
|
||||
[ clause [] (normalB [e|(Map.fromList (zip verbs universeF) !?)|]) [] ]
|
||||
]
|
||||
|
||||
|
||||
splitCamel :: Textual t => t -> [t]
|
||||
splitCamel = map fromList . reverse . helper (error "hasChange undefined at start of string") [] "" . otoList
|
||||
|
||||
Loading…
Reference in New Issue
Block a user