git.iko.soy/typeable/schematic
on master help sign in
Remove Data.Aeson.Validation
4972214Denis Redozubov
schematic.cabal+1−2
@@ -16,8 +16,7 @@ extra-source-files: ChangeLog.md
16cabal-version: >=1.10
16cabal-version: >=1.10
17
17
18library
18library
19− exposed-modules: Data.Aeson.Validation
19+ exposed-modules: Data.Schematic
20− , Data.Schematic
21 , Data.Schematic.Instances
20 , Data.Schematic.Instances
22 , Data.Schematic.Schema
21 , Data.Schematic.Schema
23 , Data.Schematic.Utils
22 , Data.Schematic.Utils
src/Data/Aeson/Validation.hsdeleted−82
@@ -1,82 +0,0 @@
1−module Data.Aeson.Validation where
2−
3−
4−import Control.Applicative
5−import Control.Monad
6−import Data.Aeson.Types as J
7−import Data.Foldable as F
8−import Data.HashMap.Strict as H
9−import Data.Maybe
10−import Data.Proxy
11−import Data.Schematic.Schema
12−import Data.Singletons
13−import Data.Singletons.Decide
14−import Data.Text as T
15−import Data.Traversable
16−
17−(<&&>) :: Applicative f => f Bool -> f Bool -> f Bool
18−(<&&>) = liftA2 (&&)
19−
20−infixl 3 <&&>
21−
22−-- validateConstraint
23−-- :: TopLevel spec
24−-- => Sing spec
25−-- -> CRepr spec
26−-- -> Value
27−-- -> Maybe Bool
28−-- validateConstraint s c = \case
29−-- J.String t -> case s %~ SJText of
30−-- Proved Refl -> pure $ case fromSing c of
31−-- TEq n -> (== n) . fromIntegral . T.length $ t
32−-- TLe n -> (<= n) . fromIntegral . T.length $ t
33−-- TGt n -> (> n) . fromIntegral . T.length $ t
34−-- Disproved _ -> mzero
35−-- J.Number i -> case s %~ SJNumber of
36−-- Proved Refl -> pure $ case fromSing c of
37−-- NEq n -> i == fromIntegral n
38−-- NLe n -> i <= fromIntegral n
39−-- NGt n -> i > fromIntegral n
40−-- Disproved _ -> mzero
41−-- J.Array v -> case s %~ SJArray of
42−-- Proved Refl -> case fromSing c of
43−-- AEq n -> pure . (== fromIntegral n) . F.length $ v
44−-- Disproved _ -> Nothing
45−-- J.Null -> Just True
46−-- _ -> Just False
47−
48−-- validateConstraints
49−-- :: SDecide JType
50−-- => Sing jtype
51−-- -> [CRepr jtype]
52−-- -> Value
53−-- -> Maybe Bool
54−-- validateConstraints s cs v = and <$> traverse alg cs
55−-- where
56−-- alg c = validateConstraint s c v
57−
58−-- validateJson
59−-- :: (SDecide JType, TopLevel spec)
60−-- => Sing spec
61−-- -> Value
62−-- -> Maybe Bool
63−-- validateJson = validateBySchema . fromSing
64−
65−-- validateBySchema
66−-- :: SDecide JType
67−-- => Schema
68−-- -> Value
69−-- -> Maybe Bool
70−-- validateBySchema s v = case (unfix s, v) of
71−-- (SchemaArray cs ss, jv@(J.Array v)) -> do
72−-- itself <- validateConstraints SJArray cs jv
73−-- content <- traverse (validateBySchema ss) v
74−-- pure $ itself && and content
75−-- (SchemaObject ocs, J.Object o) -> do
76−-- fmap and $ for ocs $ \(fieldName, s) -> do
77−-- val <- H.lookup (T.pack fieldName) o
78−-- validateBySchema s val
79−-- (SchemaText cs, js@(J.String _)) -> validateConstraints SJText cs js
80−-- (SchemaNumber cs, jn@(J.Number _)) -> validateConstraints SJNumber cs jn
81−-- (SchemaNull, J.Null) -> Just True
82−-- _ -> Nothing