Skip to content

Commit a1cb8ba

Browse files
committed
Add 'diff' set operation to transform functions
1 parent 7068817 commit a1cb8ba

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

data/completion.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ complete:
582582
desc: Performs set operations (intersection by default) over an 'a' and 'b' path to an array defined in a JSON/SLON map
583583
opts:
584584
- name: setop=
585-
desc: Allows to choose a different set operation between 'union', 'diffa', 'diffb', 'diffab' -symetric difference- and 'intersect' -default-
585+
desc: Allows to choose a different set operation between 'union', 'diffa', 'diffb', 'diffab' -symetric difference-, 'diff' and 'intersect' -default-
586586
opts:
587587
- name: setop=union
588588
desc: Will return the union of the two sets

src/include/transformFns.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,10 +440,16 @@ var _transformFns = {
440440
case "diffb" :
441441
let cb3 = new Set(toOrdStrs(_d1))
442442
return _d2.filter(r => !cb3.has(toOrdStr(r)))
443-
case "diffab" :
443+
case "diffab" :
444444
let cb4 = new Set(toOrdStrs(_d1))
445445
let cb5 = new Set(toOrdStrs(_d2))
446446
return _d1.filter(r => !cb5.has(toOrdStr(r))).concat(_d2.filter(r => !cb4.has(toOrdStr(r))))
447+
case "diff" :
448+
let cb6 = new Set(toOrdStrs(_d1))
449+
let cb7 = new Set(toOrdStrs(_d2))
450+
return _d1.map(r => Object.assign({ '*': cb7.has(toOrdStr(r)) ? __ : "a" }, r))
451+
.concat(_d2.map(r => Object.assign({ '*': cb6.has(toOrdStr(r)) ? __ : "b" }, r)))
452+
.filter(r => isDef(r['*']))
447453
case "intersect":
448454
default :
449455
let cb1 = new Set(toOrdStrs(_d2))

0 commit comments

Comments
 (0)