From 06b1638d4a1fd1a9ca3889247f32a90724bc0bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Hamal=20Dvo=C5=99=C3=A1k?= <mordae@anilinux.org> Date: Wed, 22 Jan 2020 09:33:18 +0100 Subject: [PATCH] Make Form exports more ergonomic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jan Hamal Dvořák <mordae@anilinux.org> --- lib/Hikaru/Form.hs | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/lib/Hikaru/Form.hs b/lib/Hikaru/Form.hs index 4ace1e3..5f2b497 100644 --- a/lib/Hikaru/Form.hs +++ b/lib/Hikaru/Form.hs @@ -31,10 +31,11 @@ module Hikaru.Form , multiSelectField' , opt , req + , whenChecking + , fieldShouldCheck + , fieldValue , addNote , addAttribute - , fieldCheck - , fieldValue , hasErrors ) where @@ -433,17 +434,11 @@ where -- req :: (Monad m) => l -> FieldT l a m () req label = do - shouldCheck <- fieldCheck - - if shouldCheck - then do - value <- fieldValue - case value of - Nothing -> addNote $ NoteError label - Just _v -> return () - - else do - return () + whenChecking do + value <- fieldValue + case value of + Nothing -> addNote $ NoteError label + Just _v -> return () -- | @@ -466,8 +461,20 @@ where -- | -- TODO -- - fieldCheck :: (Monad m) => FieldT l a m Bool - fieldCheck = FieldT (fst <$> ask) + whenChecking :: (Monad m) => FieldT l a m b -> FieldT l a m () + whenChecking checkField = do + check <- fieldShouldCheck + + if check + then checkField >> return () + else return () + + + -- | + -- TODO + -- + fieldShouldCheck :: (Monad m) => FieldT l a m Bool + fieldShouldCheck = FieldT (fst <$> ask) -- | -- GitLab