(diff a b)(diff a b {:keys [algo]})Create an editscript to represent the transformations needed to turn a
Clojure data structure a into another Clojure data structure b.
This function accepts any nested Clojure data structures. In Clojure, those
implement IPersistentVector, IPersistentMap, IPersistentList,
and IPersistentSet will be treated as collections. The same are true for
the corresponding deftypes in Clojurescript, such as PersistentVector,
PersistentMap, and so on. Anything else are treated as atomic values.
The editscript is represented as a vector of basic operations: add :+,
delete :-, and replace :r. Each operation also include a path to the
location of the operation, which is similar to the path vector in update-in.
However, editscript path works for all above four collection types, not just
associative ones. For :+ and :r, a new value is also required.
Currently, the default diffing algorithm, :A* aims to minimize the size of the
resulting editscript, a faster alternative is :quick algorithm, which does
not producing optimal diffing results. An :algo option can be used to choose
the algorithm.
Create an editscript to represent the transformations needed to turn a Clojure data structure `a` into another Clojure data structure `b`. This function accepts any nested Clojure data structures. In Clojure, those implement `IPersistentVector`, `IPersistentMap`, `IPersistentList`, and `IPersistentSet` will be treated as collections. The same are true for the corresponding deftypes in Clojurescript, such as `PersistentVector`, `PersistentMap`, and so on. Anything else are treated as atomic values. The editscript is represented as a vector of basic operations: add `:+`, delete `:-`, and replace `:r`. Each operation also include a path to the location of the operation, which is similar to the path vector in `update-in`. However, editscript path works for all above four collection types, not just associative ones. For `:+` and `:r`, a new value is also required. Currently, the default diffing algorithm, `:A*` aims to minimize the size of the resulting editscript, a faster alternative is `:quick` algorithm, which does not producing optimal diffing results. An `:algo` option can be used to choose the algorithm.
(patch a script)Apply the editscript script on a to produce b, assuming the
script is the results of running (diff a b), such that
(= b (patch a (diff a b))) is true
Apply the editscript `script` on `a` to produce `b`, assuming the script is the results of running `(diff a b)`, such that `(= b (patch a (diff a b)))` is true
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |