on ca34dec help sign in
72 lines 1.4 kB history raw
1module Language.JSON.Tokens
3import Language.JSON.String
4import Text.Token
6%access public export
7%default total
9strTrue : String
10strTrue = "true"
12strFalse : String
13strFalse = "false"
15data Bracket = Open | Close
17Eq Bracket where
18 (==) Open Open = True
19 (==) Close Close = True
20 (==) _ _ = False
22data Punctuation
23 = Comma
24 | Colon
25 | Square Bracket
26 | Curly Bracket
28Eq Punctuation where
29 (==) Comma Comma = True
30 (==) Colon Colon = True
31 (==) (Square b1) (Square b2) = b1 == b2
32 (==) (Curly b1) (Curly b2) = b1 == b2
33 (==) _ _ = False
35data JSONTokenKind
36 = JTBoolean
37 | JTNumber
38 | JTString
39 | JTNull
40 | JTPunct Punctuation
41 | JTIgnore
43JSONToken : Type
44JSONToken = Token JSONTokenKind
46Eq JSONTokenKind where
47 (==) JTBoolean JTBoolean = True
48 (==) JTNumber JTNumber = True
49 (==) JTString JTString = True
50 (==) JTNull JTNull = True
51 (==) (JTPunct p1) (JTPunct p2) = p1 == p2
52 (==) _ _ = False
54TokenKind JSONTokenKind where
55 TokType JTBoolean = Bool
56 TokType JTNumber = Double
57 TokType JTString = Maybe String
58 TokType JTNull = ()
59 TokType (JTPunct _) = ()
60 TokType JTIgnore = ()
62 tokValue JTBoolean x = x == strTrue
63 tokValue JTNumber x = cast x
64 tokValue JTString x = stringValue x
65 tokValue JTNull _ = ()
66 tokValue (JTPunct _) _ = ()
67 tokValue JTIgnore _ = ()
69export
70ignored : JSONToken -> Bool
71ignored (Tok JTIgnore _) = True
72ignored _ = False