data-matching
Advanced tools
Comparing version 1.23.10 to 1.24.0
{ | ||
"name": "data-matching", | ||
"version": "1.23.10", | ||
"version": "1.24.0", | ||
"description": "Matches a data object against a reference value Edit", | ||
@@ -5,0 +5,0 @@ "main": "src/index.js", |
@@ -186,4 +186,10 @@ const _ = require('lodash') | ||
var collect = (var_name) => { | ||
var collect = (var_name, matcher) => { | ||
var f = (val, dict, throw_matching_error, path) => { | ||
if(matcher) { | ||
if(!_match(matcher, val, dict, false, throw_matching_error, path)) { | ||
return | ||
} | ||
} | ||
if(typeof dict[var_name] == 'undefined') { | ||
@@ -190,0 +196,0 @@ dict[var_name] = val |
@@ -557,1 +557,25 @@ const dm = require('../src/index'); | ||
test('collect with matcher)', () => { | ||
var matcher = dm.collect('main', [ | ||
[10, dm.collect('b'), dm._], | ||
dm.partial_match([dm._, dm._, dm.collect('cc')]), | ||
]) | ||
var received = [ | ||
[10, 20, 30], | ||
[1, 2, 3], | ||
] | ||
var dict = {} | ||
expect( | ||
matcher( | ||
received, | ||
dict, | ||
!THROW_MATCHING_ERROR, | ||
"root") | ||
).toBeTruthy() | ||
expect(dict.b).toBe(20) | ||
expect(dict.cc).toBe(3) | ||
expect(dict.main).toBe(received) | ||
}) | ||
26963
884