on master help sign in
Added global limit
01e8fb7iko
denis/src/Data/Limits.hs+4−1
@@ -26,4 +26,7 @@ channelCountLimit :: Int64
26channelCountLimit = 128
26channelCountLimit = 128
27
27
28listLimit :: Int
28listLimit :: Int
29−listLimit = 100
29+listLimit = 100
30+
31+globalTextLimit :: Int
32+globalTextLimit = 20000
denis/src/Data/Text/Validator.hs+3−20
@@ -12,6 +12,7 @@ module Data.Text.Validator (
12
12
13import qualified Data.Text as T
13import qualified Data.Text as T
14import Data.Char
14import Data.Char
15+import Data.Limits
15
16
16isValidChar :: Char -> Bool
17isValidChar :: Char -> Bool
17isValidChar = isPrint
18isValidChar = isPrint
@@ -29,16 +30,6 @@ instance (HasValidatableText t) => HasValidatableText (ExtraPredicate t) where
29 validateText (t `ExtraPredicate` p) = validateText t && p t
30 validateText (t `ExtraPredicate` p) = validateText t && p t
30
31
31
32
32−
33−-- instance (Traversable f) => HasValidatableText (RangeableText (ExtraPredicate (f String))) where
34−-- validateText ((t `ExtraPredicate` p) `RangeableText` lims) = p t && validateText (t `RangeableText` lims)
35−
36−-- instance HasValidatableText (RangeableText (ExtraPredicate (f T.Text))) where
37−-- validateText ((t `ExtraPredicate` p) `RangeableText` lims) = p t && validateText (t `RangeableText` lims)
38−
39−-- instance (Foldable f) => HasValidatableText (RangeableText (ExtraPredicate (f T.Text))) where
40−-- validateText ((t `ExtraPredicate` p) `RangeableText` lims) = p t && validateText (t `RangeableText` lims)
41−
42infixl 5 ~<
33infixl 5 ~<
43(~<) :: t -> Int -> RangeableText t
34(~<) :: t -> Int -> RangeableText t
44t ~< n = t <~> (0, n)
35t ~< n = t <~> (0, n)
@@ -59,16 +50,8 @@ instance HasValidatableText (RangeableText T.Text) where
59 where
50 where
60 len = T.length t
51 len = T.length t
61
52
62−-- instance HasValidatableText (RangeableText T.Text) where
63−-- validateText (t `RangeableText` (lower, upper)) = len >= lower && len <= upper
64−-- where
65−-- len = T.length t
66−
67−-- instance (Traversable t, HasValidatableText v) => HasValidatableText (t v) where
68−-- validateText = all validateText
69−
70instance HasValidatableText T.Text where
53instance HasValidatableText T.Text where
71− validateText t = T.all isValidChar t && (not . T.null) t
54+ validateText t = T.all isValidChar t && (not . T.null) t && T.length t < globalTextLimit
72
55
73instance HasValidatableText String where
56instance HasValidatableText String where
74− validateText t = all isValidChar t && length t > 0
57+ validateText t = all isValidChar t && length t > 0 && length t < globalTextLimit