From 62903f9ef9ee47bbea11576cd9a3827aa1486b6d Mon Sep 17 00:00:00 2001 From: AlexLitv Date: Wed, 20 Sep 2017 17:36:22 +0300 Subject: [PATCH 1/2] regex in where and multiply search --- index.js | 18 +++++++++++++++--- test.js | 14 ++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index d4da074..667dc24 100644 --- a/index.js +++ b/index.js @@ -37,12 +37,24 @@ function getNames(local) { } // findBy :: String, String -> Language -function findBy(crit, val) { +function findBy(crit, val, multiple = false) { + let result = []; + for (var i = 0; i < data.length; i++) { - if (val === data[i][crit]) { - return data[i]; + if ( + val instanceof RegExp && val.test(data[i][crit]) + || val === data[i][crit] + ) { + if(!multiple){ + return data[i]; + } + result.push(data[i]); } } + + if(multiple){ + return result; + } } // forAll :: Array, Function -> Array diff --git a/test.js b/test.js index a76c4d3..dcf9823 100644 --- a/test.js +++ b/test.js @@ -10,6 +10,8 @@ suite('langs:', function () { data = require('./data'); eng = data[40]; kor = data[85]; + aar = data[1]; + afr = data[2]; }); test('`langs` is an object', function () { @@ -321,6 +323,14 @@ suite('langs:', function () { assert.strictEqual(langs.where(3, "eng"), eng); }); + test('`langs.where("name", /english/i)` is `{"name":"English", "local":"English", "1":"en", "2":"eng", "2T":"eng", "2B":"eng", "3":"eng"}`', function () { + assert.deepEqual(langs.where("name", /english/i), eng); + }); + + test('`langs.where("name", /english/i, true)` is `[{"name":"Afar", "local":"Afaraf", "1":"aa", "2":"aar", "2T":"aar", "2B":"aar", "3":"aar"},{"name":"Afrikaans", "local":"Afrikaans", "1":"af", "2":"afr", "2T":"afr", "2B":"afr", "3":"afr"}]`', function () { + assert.deepEqual(langs.where("name", /Af/, true), [aar, afr]); + }); + test('`langs.where("name", "Korean")` is `{"name":"Korean", "local":"한국어", "1":"ko", "2":"kor", "2T":"kor", "2B":"kor", "3":"kor"}`', function () { assert.strictEqual(langs.where("name", "Korean"), kor); }); @@ -369,6 +379,10 @@ suite('langs:', function () { assert.isUndefined(langs.where("local", "Geordie")); }); + test('`langs.where("local", /한국z$/)` is undefined', function () { + assert.isUndefined(langs.where("local", /한국z$/), kor); + }); + test('`langs.where("1", "zz")` is undefined', function () { assert.isUndefined(langs.where("1", "zz")); }); From cf06f2dc29b380be44575f48afce0535b975347e Mon Sep 17 00:00:00 2001 From: AlexLitv Date: Wed, 20 Sep 2017 17:42:14 +0300 Subject: [PATCH 2/2] readme for regex in where and multiply search --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index a4f279f..3c0b6e4 100644 --- a/README.md +++ b/README.md @@ -126,6 +126,15 @@ langs.has("name", "Geordie"); langs.has("high", "fives"); // false + +langs.where("name", /af/i); +// {"name":"Afar", "local":"Afaraf", "1":"aa", "2":"aar", "2T":"aar", "2B":"aar", "3":"aar"} + +langs.where("name", /Af/, true); +// [ +// {"name":"Afar", "local":"Afaraf", "1":"aa", "2":"aar", "2T":"aar", "2B":"aar", "3":"aar"}, +// {"name":"Afrikaans", "local":"Afrikaans", "1":"af", "2":"afr", "2T":"afr", "2B":"afr", "3":"afr"} +// ] ``` ## Contributing