hedn-0.1.8.2: EDN parsing and encoding

Safe HaskellNone
LanguageHaskell98

Data.EDN.Types

Contents

Synopsis

Types

data Value Source #

A "raw" EDN value represented as a Haskell value.

data Tagged a Source #

Abstract namespaced tag.

Constructors

NoTag !a 
Tagged !a !ByteString !ByteString 

Instances

Functor Tagged Source # 

Methods

fmap :: (a -> b) -> Tagged a -> Tagged b #

(<$) :: a -> Tagged b -> Tagged a #

FromEDN TaggedValue Source # 
ToEDN TaggedValue Source # 
Eq a => Eq (Tagged a) Source # 

Methods

(==) :: Tagged a -> Tagged a -> Bool #

(/=) :: Tagged a -> Tagged a -> Bool #

Ord a => Ord (Tagged a) Source # 

Methods

compare :: Tagged a -> Tagged a -> Ordering #

(<) :: Tagged a -> Tagged a -> Bool #

(<=) :: Tagged a -> Tagged a -> Bool #

(>) :: Tagged a -> Tagged a -> Bool #

(>=) :: Tagged a -> Tagged a -> Bool #

max :: Tagged a -> Tagged a -> Tagged a #

min :: Tagged a -> Tagged a -> Tagged a #

Show a => Show (Tagged a) Source # 

Methods

showsPrec :: Int -> Tagged a -> ShowS #

show :: Tagged a -> String #

showList :: [Tagged a] -> ShowS #

IsString (Tagged Value) Source #

Strings will become an tagless EDN strings.

NFData a => NFData (Tagged a) Source # 

Methods

rnf :: Tagged a -> () #

FromEDN a => FromEDN (Tagged a) Source # 
ToEDN a => ToEDN (Tagged a) Source # 

Internal containers

type EDNList Source #

Arguments

 = [TaggedValue]

An EDN list (head:tail container).

type EDNVec Source #

Arguments

 = Vector TaggedValue

An EDN vector (position-indexed container) of EDN values.

type EDNSet Source #

Arguments

 = Set TaggedValue

An EDN set (unordered container of unique values).

type EDNMap Source #

Arguments

 = Map Value TaggedValue

An EDN map (key/value container). Keys are untagged and values are tagged.

type Pair = (Value, TaggedValue) Source #

A key/value pair for a EDN Map

Tag manipulation

setTag :: ByteString -> ByteString -> Tagged a -> Tagged a Source #

Replace a tag on a Tagged value.

getTag :: TaggedValue -> (ByteString, ByteString) Source #

Extract namespace and tag from a tagged container. Will be a pair of empty for tagless containers.

stripTag :: Tagged a -> a Source #

Extract bare value from a tagged or tagless container.

Constructors

tag :: ByteString -> ByteString -> a -> Tagged a Source #

Attach a namespaced tag to a value.

notag :: a -> Tagged a Source #

Wrap a value into tagless container.

Trivial values

nil :: TaggedValue Source #

Basic EDN nil.

bool :: Bool -> TaggedValue Source #

Basic EDN boolean.

true :: TaggedValue Source #

Const EDN True.

false :: TaggedValue Source #

Const EDN False.

char :: Char -> TaggedValue Source #

Basic EDN character.

string :: Text -> TaggedValue Source #

Basic EDN string.

symbol :: ByteString -> TaggedValue Source #

"Bare" symbol.

symbolNS :: ByteString -> ByteString -> TaggedValue Source #

A namespaced symbol.

keyword :: ByteString -> TaggedValue Source #

Basic EDN keyword.

integer :: Integer -> TaggedValue Source #

Basic EDN integer.

floating :: Double -> TaggedValue Source #

Basic EDN fp number.

Containers

makeList :: [TaggedValue] -> Value Source #

Create an EDN List from a Value list wrapping them into empty tags.

makeVec :: [TaggedValue] -> Value Source #

Create an EDN Vector from a TaggedValue list.

makeSet :: [TaggedValue] -> Value Source #

Create an EDN Set from a TaggedValue list.

makeMap :: [Pair] -> Value Source #

Create an EDN Map from a assoc list with untagged keys and tagged values.