| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Aeson.Diff
Description
This module implements data types and operations to represent the differences between JSON documents (i.e. a patch), to compare JSON documents and extract such a patch, and to apply such a patch to a JSON document.
Synopsis
- newtype Patch = Patch {
- patchOperations :: [Operation]
- data Pointer
- data Key
- data Operation
- = Add {
- changePointer :: Pointer
- changeValue :: Value
- | Cpy { }
- | Mov { }
- | Rem { }
- | Rep {
- changePointer :: Pointer
- changeValue :: Value
- | Tst {
- changePointer :: Pointer
- changeValue :: Value
- = Add {
- newtype Config = Config {
- configTstBeforeRem :: Bool
- diff :: Value -> Value -> Patch
- diff' :: Config -> Value -> Value -> Patch
- patch :: Patch -> Value -> Result Value
- applyOperation :: Operation -> Value -> Result Value
Patches
Describes the changes between two JSON documents.
Constructors
| Patch | |
Fields
| |
Instances
| Eq Patch Source # | |
| Show Patch Source # | |
| Generic Patch Source # | |
| Semigroup Patch Source # | |
| Monoid Patch Source # | |
| FromJSON Patch Source # | |
Defined in Data.Aeson.Patch | |
| ToJSON Patch Source # | |
Defined in Data.Aeson.Patch Methods toEncoding :: Patch -> Encoding toJSONList :: [Patch] -> Value toEncodingList :: [Patch] -> Encoding | |
| type Rep Patch Source # | |
Defined in Data.Aeson.Patch | |
Pointer to a location in a JSON document.
Defined in RFC 6901 http://tools.ietf.org/html/rfc6901
Instances
| Eq Pointer Source # | |
| Ord Pointer Source # | |
| Show Pointer Source # | |
| Generic Pointer Source # | |
| Semigroup Pointer Source # | |
| Monoid Pointer Source # | |
| FromJSON Pointer Source # | |
Defined in Data.Aeson.Pointer | |
| ToJSON Pointer Source # | |
Defined in Data.Aeson.Pointer Methods toEncoding :: Pointer -> Encoding toJSONList :: [Pointer] -> Value toEncodingList :: [Pointer] -> Encoding | |
| type Rep Pointer Source # | |
Defined in Data.Aeson.Pointer | |
Path components to traverse a single layer of a JSON document.
Constructors
| OKey Text | Traverse a |
| AKey Int | Traverse a |
Instances
| Eq Key Source # | |
| Ord Key Source # | |
| Show Key Source # | |
| Generic Key Source # | |
| FromJSON Key Source # | |
Defined in Data.Aeson.Pointer | |
| ToJSON Key Source # | |
Defined in Data.Aeson.Pointer | |
| type Rep Key Source # | |
Defined in Data.Aeson.Pointer type Rep Key = D1 ('MetaData "Key" "Data.Aeson.Pointer" "aeson-diff-1.1.0.9-FU0rwNsqoVMEEGMmr1rem9" 'False) (C1 ('MetaCons "OKey" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "AKey" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))) | |
An Operation describes the operations which can appear as part of a JSON
Patch.
See RFC 6902 Section 4 http://tools.ietf.org/html/rfc6902#section-4.
Constructors
| Add | |
Fields
| |
| Cpy | |
Fields | |
| Mov | |
Fields | |
| Rem | |
Fields | |
| Rep | |
Fields
| |
| Tst | |
Fields
| |
Instances
| Eq Operation Source # | |
| Show Operation Source # | |
| Generic Operation Source # | |
| FromJSON Operation Source # | |
Defined in Data.Aeson.Patch | |
| ToJSON Operation Source # | |
Defined in Data.Aeson.Patch Methods toEncoding :: Operation -> Encoding toJSONList :: [Operation] -> Value toEncodingList :: [Operation] -> Encoding | |
| type Rep Operation Source # | |
Defined in Data.Aeson.Patch type Rep Operation = D1 ('MetaData "Operation" "Data.Aeson.Patch" "aeson-diff-1.1.0.9-FU0rwNsqoVMEEGMmr1rem9" 'False) ((C1 ('MetaCons "Add" 'PrefixI 'True) (S1 ('MetaSel ('Just "changePointer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pointer) :*: S1 ('MetaSel ('Just "changeValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value)) :+: (C1 ('MetaCons "Cpy" 'PrefixI 'True) (S1 ('MetaSel ('Just "changePointer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pointer) :*: S1 ('MetaSel ('Just "fromPointer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pointer)) :+: C1 ('MetaCons "Mov" 'PrefixI 'True) (S1 ('MetaSel ('Just "changePointer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pointer) :*: S1 ('MetaSel ('Just "fromPointer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pointer)))) :+: (C1 ('MetaCons "Rem" 'PrefixI 'True) (S1 ('MetaSel ('Just "changePointer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pointer)) :+: (C1 ('MetaCons "Rep" 'PrefixI 'True) (S1 ('MetaSel ('Just "changePointer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pointer) :*: S1 ('MetaSel ('Just "changeValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value)) :+: C1 ('MetaCons "Tst" 'PrefixI 'True) (S1 ('MetaSel ('Just "changePointer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Pointer) :*: S1 ('MetaSel ('Just "changeValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value))))) | |
Configuration for the diff algorithm.
Constructors
| Config | |
Fields
| |
Functions
diff :: Value -> Value -> Patch Source #
Compare two JSON documents and generate a patch describing the differences.
Uses the defaultConfig.
diff' :: Config -> Value -> Value -> Patch Source #
Compare two JSON documents and generate a patch describing the differences.
applyOperation :: Operation -> Value -> Result Value Source #
Apply an Operation to a Value.