Skip to content

Commit

Permalink
Add ssv.meet method (#35)
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanve authored Dec 23, 2017
1 parent 8b955fa commit d227a75
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 0 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ ssv.diff("mark tom tom", "mark matt") // "tom tom"
ssv.diff("matt matt matt", "") // "matt matt matt"
ssv.diff("mark mark", "tom tom") // "mark mark"
ssv.diff("mark tom tom tom", "tom") // "mark"
ssv.meet("", "mark") // ""
ssv.meet("mark matt travis", "tom scott") // ""
ssv.meet("mark tom tom", "mark tom travis") // "mark tom"
ssv.union("mark tom ", "travis tom") // "mark tom travis"
ssv.union("mark tom tom", "travis tom") // "mark tom travis"
ssv.union("matt mark", "matt") // "matt mark"
Expand Down Expand Up @@ -71,6 +74,10 @@ ssv.xor("mark mark", "tom tom") // "mark tom"
- Get the difference of 2 SSV strings (values in first not present in second)
- `@return` string

### `ssv.meet(SSV, SSV2)`
- Get the intersection of 2 SSV strings (unique values present in both)
- `@return` string

### `ssv.split(SSV)`
- Split <var>SSV</var> into compact array of values
- `@return` array
Expand Down
1 change: 1 addition & 0 deletions ssv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ declare module ssv {
export function compact(ssv: string): string;
export function concat(ssv: string, more: string): string;
export function diff(ssv: string, less: string): string;
export function meet(left: string, right: string): string;
export function split(ssv: string): string[];
export function union(ssv: string, more: string): string;
export function uniq(ssv: string): string;
Expand Down
5 changes: 5 additions & 0 deletions ssv.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@
return union(diff(left, right), diff(right, left))
}

function meet(left, right) {
return diff(union(left, right), xor(left, right))
}

function uniq(ssv) {
ssv = split(ssv)
var u = []
Expand Down Expand Up @@ -91,6 +95,7 @@
api["compact"] = compact
api["concat"] = concat
api["diff"] = diff
api["meet"] = meet
api["split"] = split
api["union"] = union
api["uniq"] = uniq
Expand Down
7 changes: 7 additions & 0 deletions test.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,13 @@ assert.strictEqual(api.union("mark mark mark", ""), "mark")
assert.strictEqual(api.union("mark mark mark", "tom"), "mark tom")
console.log("#union tests passed")

assert.strictEqual(api.meet("", ""), "")
assert.strictEqual(api.meet("", "mark"), "")
assert.strictEqual(api.meet("mark matt travis", "tom scott"), "")
assert.strictEqual(api.meet("mark tom tom", "mark tom travis"), "mark tom")
assert.strictEqual(api.meet("tom tom tom scott", "tom travis scott"), "tom scott")
console.log("#meet tests passed")

assert.strictEqual(api.diff("", ""), "")
assert.strictEqual(api.diff("", "mark"), "")
assert.strictEqual(api.diff("mark tom", "travis"), "mark tom")
Expand Down

0 comments on commit d227a75

Please sign in to comment.