Clojure(script) implementation of JSON Patch as specified in http://tools.ietf.org/html/rfc6902 with support for JSON Pointer https://tools.ietf.org/html/rfc6901
[clj-json-patch 0.1.7]
;; From some example namespace:
(ns example.namespace
(:require [clj-json-patch.core :refer :all]))
clj-json-patch.core=> (diff {"foo" "bar"} {"foo" ["bar"]})
[{"op" "replace", "path" "/foo", "value" ["bar"]}]
clj-json-patch.core=> (diff {"foo" ["all" "grass" "cows" "eat"]}
{"foo" ["all" "cows" "eat" "grass"]})
[{"op" "move", "from" "/foo/1", "path" "/foo/3"}]
clj-json-patch.core=> (diff (.stringify js/JSON (clj->js {"foo" "bar"}))
(.stringify js/JSON (clj->js {"foo" ["bar"]})))
[{"op" "replace", "path" "/foo", "value" ["bar"]}]
clj-json-patch.core=> (diff (.stringify js/JSON (clj->js {"foo" ["all" "grass" "cows" "eat"]}))
(.stringify js/JSON (clj->js {"foo" ["all" "cows" "eat" "grass"]})))
[{"op" "move", "from" "/foo/1", "path" "/foo/3"}]
clj-json-patch.core=> (patch {"foo" "bar"} [{"op" "replace", "path" "/foo", "value" ["bar"]}])
{"foo" ["bar"]}
clj-json-patch.core=> (patch {"foo" ["all" "grass" "cows" "eat"]}
[{"op" "move", "from" "/foo/1", "path" "/foo/3"}])
{"foo" ["all" "cows" "eat" "grass"]}
clj-json-patch.core=> (patch (.stringify js/JSON (clj->js {"foo" "bar"}))
(.stringify js/JSON (clj->js [{"op" "replace", "path" "/foo", "value" ["bar"]}])))
{"foo" ["bar"]}
clj-json-patch.core=> (patch (.stringify js/JSON (clj->js {"foo" ["all" "grass" "cows" "eat"]}))
(.stringify js/JSON (clj->js [{"op" "move", "from" "/foo/1", "path" "/foo/3"}])))
{"foo" ["all" "cows" "eat" "grass"]}
lein midje
lein doo once
Remark: First run the tests for ClojureScript, for some reason "lein midje" returns an error on compilation of the javascript files needed for the ClojureScript tests.
Can you improve this documentation? These fine people already did:
David Park & Jeroen VerschuurenEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close