0 | module Language.JSON.Tokens
2 | import Language.JSON.String
17 | data Bracket = Open | Close
21 | (==) Open Open = True
22 | (==) Close Close = True
33 | Eq Punctuation where
34 | (==) Comma Comma = True
35 | (==) Colon Colon = True
36 | (==) (Square b1) (Square b2) = b1 == b2
37 | (==) (Curly b1) (Curly b2) = b1 == b2
46 | | JTPunct Punctuation
51 | JSONToken = Token JSONTokenKind
54 | Eq JSONTokenKind where
55 | (==) JTBoolean JTBoolean = True
56 | (==) JTNumber JTNumber = True
57 | (==) JTString JTString = True
58 | (==) JTNull JTNull = True
59 | (==) (JTPunct p1) (JTPunct p2) = p1 == p2
63 | TokenKind JSONTokenKind where
64 | TokType JTBoolean = Bool
65 | TokType JTNumber = Double
66 | TokType JTString = Maybe String
68 | TokType (JTPunct _) = ()
69 | TokType JTIgnore = ()
71 | tokValue JTBoolean x = x == strTrue
72 | tokValue JTNumber x = cast x
73 | tokValue JTString x = stringValue x
74 | tokValue JTNull _ = ()
75 | tokValue (JTPunct _) _ = ()
76 | tokValue JTIgnore _ = ()
79 | ignored : WithBounds JSONToken -> Bool
80 | ignored (MkBounded (Tok JTIgnore _) _ _) = True