module Language.JSON.Tokens import Language.JSON.Stringimport Text.Token %default total public exportstrTrue : StringstrTrue = "true" public exportstrFalse : StringstrFalse = "false" public exportdata Bracket = Open | Close public exportEq Bracket where (==) Open Open = True (==) Close Close = True (==) _ _ = False public exportdata Punctuation = Comma | Colon | Square Bracket | Curly Bracket public exportEq Punctuation where (==) Comma Comma = True (==) Colon Colon = True (==) (Square b1) (Square b2) = b1 == b2 (==) (Curly b1) (Curly b2) = b1 == b2 (==) _ _ = False public exportdata JSONTokenKind = JTBoolean | JTNumber | JTString | JTNull | JTPunct Punctuation | JTIgnore public exportJSONToken : TypeJSONToken = Token JSONTokenKind public exportEq JSONTokenKind where (==) JTBoolean JTBoolean = True (==) JTNumber JTNumber = True (==) JTString JTString = True (==) JTNull JTNull = True (==) (JTPunct p1) (JTPunct p2) = p1 == p2 (==) _ _ = False public exportTokenKind JSONTokenKind where TokType JTBoolean = Bool TokType JTNumber = Double TokType JTString = Maybe String TokType JTNull = () TokType (JTPunct _) = () TokType JTIgnore = () tokValue JTBoolean x = x == strTrue tokValue JTNumber x = cast x tokValue JTString x = stringValue x tokValue JTNull _ = () tokValue (JTPunct _) _ = () tokValue JTIgnore _ = () exportignored : JSONToken -> Boolignored (Tok JTIgnore _) = Trueignored _ = False
module Language.JSON.Tokens
import Language.JSON.String
import Text.Token
%default total
public export
strTrue : String
strTrue = "true"
public export
strFalse : String
strFalse = "false"
public export
data Bracket = Open | Close
public export
Eq Bracket where
(==) Open Open = True
(==) Close Close = True
(==) _ _ = False
public export
data Punctuation
= Comma
| Colon
| Square Bracket
| Curly Bracket
public export
Eq Punctuation where
(==) Comma Comma = True
(==) Colon Colon = True
(==) (Square b1) (Square b2) = b1 == b2
(==) (Curly b1) (Curly b2) = b1 == b2
(==) _ _ = False
public export
data JSONTokenKind
= JTBoolean
| JTNumber
| JTString
| JTNull
| JTPunct Punctuation
| JTIgnore
public export
JSONToken : Type
JSONToken = Token JSONTokenKind
public export
Eq JSONTokenKind where
(==) JTBoolean JTBoolean = True
(==) JTNumber JTNumber = True
(==) JTString JTString = True
(==) JTNull JTNull = True
(==) (JTPunct p1) (JTPunct p2) = p1 == p2
(==) _ _ = False
public export
TokenKind JSONTokenKind where
TokType JTBoolean = Bool
TokType JTNumber = Double
TokType JTString = Maybe String
TokType JTNull = ()
TokType (JTPunct _) = ()
TokType JTIgnore = ()
tokValue JTBoolean x = x == strTrue
tokValue JTNumber x = cast x
tokValue JTString x = stringValue x
tokValue JTNull _ = ()
tokValue (JTPunct _) _ = ()
tokValue JTIgnore _ = ()
export
ignored : JSONToken -> Bool
ignored (Tok JTIgnore _) = True
ignored _ = False