Skip to main content

module salix::Diff

rascal-0.42.0
org.rascalmpl.salix-core-0.2.11

Usage​

import salix::Diff;

Dependencies​

import salix::Node;
import salix::util::LCS;
import List;
import util::Math;
import IO;
import vis::Text;

data Patch​

data Patch  
= patch(int pos, list[Patch] patches = [], list[Edit] edits = [])
;

Patch are positioned at pos in the parent element where they originate. This allows sparse/shallow traversal during patching: not all kids of an element will have changes, so patches for those kids will not end up in the patch at all. At each level a list of edits can be applied. A root patch will have pos = - 1.

data EditType​

data EditType  
= setText()
| replace()
| removeNode()
| appendNode()
| insertNode()
| setAttr()
| setProp()
| setEvent()
| setExtra()
| removeAttr()
| removeProp()
| removeEvent()
| removeExtra()
;

data Node​

data Node  
= none()
;

data Hnd​

data Hnd  
= null()
;

data Edit​

data Edit  
= edit(EditType \type, str contents="", Node html=none(), Hnd handler=null(),
str name="", str val="", int pos=-1, value extra=())
;

function diff​

Patch diff(Node old, Node new)

function nodeEq​

bool nodeEq(Node x, Node y)

function diff​

Patch diff(Node old, Node new, int idx)

function isAlien​

bool isAlien(Node nk)

function getId​

str getId(Node n)

function diffKids​

Patch diffKids(list[Node] oldKids, list[Node] newKids, Patch myPatch)

function diffEventMap​

list[Edit] diffEventMap(map[str, Hnd] old, map[str, Hnd] new)

function diffMap​

list[Edit] diffMap(map[str, str] old, map[str, str] new, EditType upd, EditType del)

function diffExtra​

list[Edit] diffExtra(map[str, value] old, map[str, value] new)