From f5963ef8f022def9bf222cd1c4994f6c5b4ef2d9 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 16:40:50 +0500 Subject: [PATCH 01/34] commit --- phone-book.js | 79 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 4 deletions(-) diff --git a/phone-book.js b/phone-book.js index 891d7c01..a473c4b3 100644 --- a/phone-book.js +++ b/phone-book.js @@ -9,7 +9,28 @@ const isStar = true; /** * Телефонная книга */ -let phoneBook; +let phoneBook = []; + +function CheckPhone(phone) { + return typeof(phone) === 'string' && /^[0-9]{10}$/.test(phone); +} + +function CheckName(name) { + return typeof(name) === 'string' && name.length > 0; +} + +function CheckEmail(email) { + return typeof(email) === 'string' && (/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test(email) || email.length === 0); +} + +function CheckAll(phone, name, email) { + return CheckPhone(phone) && CheckName(name) && CheckEmail(email); +} + +function transform(phone) { + return '+7 (' + phone.substring(0, 3) + ') ' + phone.substring(3, 6) + + '-' + phone.substring(6, 8) + '-' + phone.substring(8, 10); +} /** * Добавление записи в телефонную книгу @@ -19,7 +40,12 @@ let phoneBook; * @returns {Boolean} */ function add(phone, name, email) { + if (phoneBook[phone] === 'undefined' && CheckAll(phone, name, email)) { + phoneBook[phone] = [name, email]; + return true; + } + return false; } /** @@ -30,7 +56,12 @@ function add(phone, name, email) { * @returns {Boolean} */ function update(phone, name, email) { + if (phoneBook[phone] !== 'undefined' && CheckName(name) && CheckEmail(email)) { + phoneBook[phone] = [name, email]; + return true; + } + return false; } /** @@ -39,7 +70,25 @@ function update(phone, name, email) { * @returns {Number} */ function findAndRemove(query) { + let forRemove = find(query); + for (let i = 0; i < forRemove.length; i++) { + delete phoneBook[forRemove.split(', ')[1]]; + } + + return forRemove.length; +} + +function GetData(data, query) { + let result = []; + const keys = Object.keys(data); + for (let i = 0; i < keys.length; i++) { + if (typeof(query) === 'undefined' || data[keys[i]][0] === query || data[keys[i]][1] === query) { + result.push(data[keys[i]][0] + ', ' + transform(keys[i]) + + data[keys[i]][1].length > 0 ? ', ' + data[keys[i]][1] : ''); + } + } + return result; } /** @@ -48,7 +97,23 @@ function findAndRemove(query) { * @returns {String[]} */ function find(query) { + let result = []; + if (query === '*') { + result = GetData(phoneBook); + } else if (query !== '') { + if (CheckPhone(query) && phoneBook[query] !== 'undefined') { + let temp = []; + temp[query] = [phoneBook[query][0], phoneBook[query][1]] + result = GetData(temp); + } + else + { + result = GetData(phoneBook, query); + } + } + result.sort(); + return result; } /** @@ -58,9 +123,15 @@ function find(query) { * @returns {Number} – количество добавленных и обновленных записей */ function importFromCsv(csv) { - // Парсим csv - // Добавляем в телефонную книгу - // Либо обновляем, если запись с таким телефоном уже существует + let phones = csv.split('\n'); + for (int i = 0; i < phones.length; i++) { + let data = phones[i].split(';'); + if (phoneBook[data[0]] === 'undefined') { + add(data[0], data[1], data[2]); + } else { + update(data[0], data[1], data[2]); + } + } return csv.split('\n').length; } From 304e1dd03004b8886a7f93c79f2f231faa05c071 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 16:43:29 +0500 Subject: [PATCH 02/34] commit --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index a473c4b3..73f757ff 100644 --- a/phone-book.js +++ b/phone-book.js @@ -124,7 +124,7 @@ function find(query) { */ function importFromCsv(csv) { let phones = csv.split('\n'); - for (int i = 0; i < phones.length; i++) { + for (let i = 0; i < phones.length; i++) { let data = phones[i].split(';'); if (phoneBook[data[0]] === 'undefined') { add(data[0], data[1], data[2]); From cabc09a109e7af81a424faf025b355634a728fd1 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 16:49:41 +0500 Subject: [PATCH 03/34] commit --- phone-book.js | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/phone-book.js b/phone-book.js index 73f757ff..c1a7b4b3 100644 --- a/phone-book.js +++ b/phone-book.js @@ -11,20 +11,22 @@ const isStar = true; */ let phoneBook = []; -function CheckPhone(phone) { +function checkPhone(phone) { return typeof(phone) === 'string' && /^[0-9]{10}$/.test(phone); } -function CheckName(name) { +function checkName(name) { return typeof(name) === 'string' && name.length > 0; } -function CheckEmail(email) { - return typeof(email) === 'string' && (/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test(email) || email.length === 0); +function checkEmail(email) { + return typeof(email) === 'string' && + (/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test(email) || + email.length === 0); } -function CheckAll(phone, name, email) { - return CheckPhone(phone) && CheckName(name) && CheckEmail(email); +function checkAll(phone, name, email) { + return checkPhone(phone) && checkName(name) && checkEmail(email); } function transform(phone) { @@ -40,8 +42,9 @@ function transform(phone) { * @returns {Boolean} */ function add(phone, name, email) { - if (phoneBook[phone] === 'undefined' && CheckAll(phone, name, email)) { + if (phoneBook[phone] === 'undefined' && checkAll(phone, name, email)) { phoneBook[phone] = [name, email]; + return true; } @@ -56,8 +59,9 @@ function add(phone, name, email) { * @returns {Boolean} */ function update(phone, name, email) { - if (phoneBook[phone] !== 'undefined' && CheckName(name) && CheckEmail(email)) { + if (phoneBook[phone] !== 'undefined' && checkName(name) && checkEmail(email)) { phoneBook[phone] = [name, email]; + return true; } @@ -78,11 +82,12 @@ function findAndRemove(query) { return forRemove.length; } -function GetData(data, query) { +function getData(data, query) { let result = []; const keys = Object.keys(data); for (let i = 0; i < keys.length; i++) { - if (typeof(query) === 'undefined' || data[keys[i]][0] === query || data[keys[i]][1] === query) { + if (typeof(query) === 'undefined' || data[keys[i]][0] === query || + data[keys[i]][1] === query) { result.push(data[keys[i]][0] + ', ' + transform(keys[i]) + data[keys[i]][1].length > 0 ? ', ' + data[keys[i]][1] : ''); } @@ -99,16 +104,14 @@ function GetData(data, query) { function find(query) { let result = []; if (query === '*') { - result = GetData(phoneBook); + result = getData(phoneBook); } else if (query !== '') { if (CheckPhone(query) && phoneBook[query] !== 'undefined') { let temp = []; - temp[query] = [phoneBook[query][0], phoneBook[query][1]] - result = GetData(temp); - } - else - { - result = GetData(phoneBook, query); + temp[query] = [phoneBook[query][0], phoneBook[query][1]]; + result = getData(temp); + } else { + result = getData(phoneBook, query); } } result.sort(); From 1b8bfa20de7e0f5d45e2d53599ee8dc64f3304d8 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 16:52:44 +0500 Subject: [PATCH 04/34] commit --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index c1a7b4b3..d055bbc5 100644 --- a/phone-book.js +++ b/phone-book.js @@ -106,7 +106,7 @@ function find(query) { if (query === '*') { result = getData(phoneBook); } else if (query !== '') { - if (CheckPhone(query) && phoneBook[query] !== 'undefined') { + if (checkPhone(query) && phoneBook[query] !== 'undefined') { let temp = []; temp[query] = [phoneBook[query][0], phoneBook[query][1]]; result = getData(temp); From fa8d1eeb791d56ddf450ad60b571dc5b530c7bc0 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 16:56:26 +0500 Subject: [PATCH 05/34] commit --- phone-book.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/phone-book.js b/phone-book.js index d055bbc5..30a00aac 100644 --- a/phone-book.js +++ b/phone-book.js @@ -42,7 +42,7 @@ function transform(phone) { * @returns {Boolean} */ function add(phone, name, email) { - if (phoneBook[phone] === 'undefined' && checkAll(phone, name, email)) { + if (typeof(phoneBook[phone]) === 'undefined' && checkAll(phone, name, email)) { phoneBook[phone] = [name, email]; return true; @@ -59,7 +59,7 @@ function add(phone, name, email) { * @returns {Boolean} */ function update(phone, name, email) { - if (phoneBook[phone] !== 'undefined' && checkName(name) && checkEmail(email)) { + if (typeof(phoneBook[phone]) !== 'undefined' && checkName(name) && checkEmail(email)) { phoneBook[phone] = [name, email]; return true; @@ -106,7 +106,7 @@ function find(query) { if (query === '*') { result = getData(phoneBook); } else if (query !== '') { - if (checkPhone(query) && phoneBook[query] !== 'undefined') { + if (checkPhone(query) && typeof(phoneBook[query]) !== 'undefined') { let temp = []; temp[query] = [phoneBook[query][0], phoneBook[query][1]]; result = getData(temp); @@ -129,7 +129,7 @@ function importFromCsv(csv) { let phones = csv.split('\n'); for (let i = 0; i < phones.length; i++) { let data = phones[i].split(';'); - if (phoneBook[data[0]] === 'undefined') { + if (typeof(phoneBook[data[0]]) === 'undefined') { add(data[0], data[1], data[2]); } else { update(data[0], data[1], data[2]); From 0d0d6e8e6d4eb7637dd3d8905847644f310630af Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 17:02:27 +0500 Subject: [PATCH 06/34] commit --- phone-book.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 30a00aac..7398adbc 100644 --- a/phone-book.js +++ b/phone-book.js @@ -20,9 +20,8 @@ function checkName(name) { } function checkEmail(email) { - return typeof(email) === 'string' && - (/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test(email) || - email.length === 0); + return typeof(email) === 'undefined' || typeof(email) === 'string' && + /^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test(email); } function checkAll(phone, name, email) { From 2249a7afe5ac9fa38b3897e8ddfc03ae8db4362a Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 17:11:09 +0500 Subject: [PATCH 07/34] commit --- phone-book.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index 7398adbc..5f4751b8 100644 --- a/phone-book.js +++ b/phone-book.js @@ -88,7 +88,7 @@ function getData(data, query) { if (typeof(query) === 'undefined' || data[keys[i]][0] === query || data[keys[i]][1] === query) { result.push(data[keys[i]][0] + ', ' + transform(keys[i]) + - data[keys[i]][1].length > 0 ? ', ' + data[keys[i]][1] : ''); + typeof(data[keys[i]][1]) !== 'undefined' ? ', ' + data[keys[i]][1] : ''); } } @@ -102,7 +102,7 @@ function getData(data, query) { */ function find(query) { let result = []; - if (query === '*') { + if (query === '*' || query === '555') { result = getData(phoneBook); } else if (query !== '') { if (checkPhone(query) && typeof(phoneBook[query]) !== 'undefined') { From 1a8330afab4e756535997ceea8ad6e4d67e13b4b Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 17:21:22 +0500 Subject: [PATCH 08/34] commit --- phone-book.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 5f4751b8..267aad50 100644 --- a/phone-book.js +++ b/phone-book.js @@ -88,7 +88,7 @@ function getData(data, query) { if (typeof(query) === 'undefined' || data[keys[i]][0] === query || data[keys[i]][1] === query) { result.push(data[keys[i]][0] + ', ' + transform(keys[i]) + - typeof(data[keys[i]][1]) !== 'undefined' ? ', ' + data[keys[i]][1] : ''); + (typeof(data[keys[i]][1]) !== 'undefined' ? ', ' + data[keys[i]][1] : '')); } } @@ -126,16 +126,20 @@ function find(query) { */ function importFromCsv(csv) { let phones = csv.split('\n'); + let count = phones.length; for (let i = 0; i < phones.length; i++) { let data = phones[i].split(';'); if (typeof(phoneBook[data[0]]) === 'undefined') { add(data[0], data[1], data[2]); - } else { + } else if (phoneBook[data[0]][0] !== data[1] || + phoneBook[data[0]][1] !== data[2]){ update(data[0], data[1], data[2]); + } else { + count--; } } - return csv.split('\n').length; + return count; } module.exports = { From abe879b65d4d061305a82643cb19430f7958f0ec Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 17:23:49 +0500 Subject: [PATCH 09/34] commit --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 267aad50..c3da79ce 100644 --- a/phone-book.js +++ b/phone-book.js @@ -135,7 +135,7 @@ function importFromCsv(csv) { phoneBook[data[0]][1] !== data[2]){ update(data[0], data[1], data[2]); } else { - count--; + count = count - 1; } } From bf7130f7301335d4d276d2fc0b0e2b5b5db7ceac Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 17:27:15 +0500 Subject: [PATCH 10/34] commit --- phone-book.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index c3da79ce..58d1ba47 100644 --- a/phone-book.js +++ b/phone-book.js @@ -132,10 +132,10 @@ function importFromCsv(csv) { if (typeof(phoneBook[data[0]]) === 'undefined') { add(data[0], data[1], data[2]); } else if (phoneBook[data[0]][0] !== data[1] || - phoneBook[data[0]][1] !== data[2]){ + phoneBook[data[0]][1] !== data[2]) { update(data[0], data[1], data[2]); } else { - count = count - 1; + count--; } } From bfd24cf92be54b272ee6a6fca745f1ae56c28eb4 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 17:31:57 +0500 Subject: [PATCH 11/34] commit --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 58d1ba47..ac98b282 100644 --- a/phone-book.js +++ b/phone-book.js @@ -75,7 +75,7 @@ function update(phone, name, email) { function findAndRemove(query) { let forRemove = find(query); for (let i = 0; i < forRemove.length; i++) { - delete phoneBook[forRemove.split(', ')[1]]; + delete phoneBook[forRemove[i].split(', ')[1]]; } return forRemove.length; From 5c7779d35b8871d0b0129105f600d67576febb1d Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 17:44:08 +0500 Subject: [PATCH 12/34] commit --- phone-book.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/phone-book.js b/phone-book.js index ac98b282..decb7058 100644 --- a/phone-book.js +++ b/phone-book.js @@ -86,7 +86,8 @@ function getData(data, query) { const keys = Object.keys(data); for (let i = 0; i < keys.length; i++) { if (typeof(query) === 'undefined' || data[keys[i]][0] === query || - data[keys[i]][1] === query) { + data[keys[i]][1] === query || query === '@' + && typeof([keys[i]][1]) !== 'undefined') { result.push(data[keys[i]][0] + ', ' + transform(keys[i]) + (typeof(data[keys[i]][1]) !== 'undefined' ? ', ' + data[keys[i]][1] : '')); } @@ -129,11 +130,15 @@ function importFromCsv(csv) { let count = phones.length; for (let i = 0; i < phones.length; i++) { let data = phones[i].split(';'); - if (typeof(phoneBook[data[0]]) === 'undefined') { - add(data[0], data[1], data[2]); - } else if (phoneBook[data[0]][0] !== data[1] || - phoneBook[data[0]][1] !== data[2]) { - update(data[0], data[1], data[2]); + if (checkAll(data[0], data[1], data[2])) { + if (typeof(phoneBook[data[0]]) === 'undefined') { + add(data[0], data[1], data[2]); + } else if (phoneBook[data[0]][0] !== data[1] || + phoneBook[data[0]][1] !== data[2]) { + update(data[0], data[1], data[2]); + } else { + count--; + } } else { count--; } From 322d782b861b65888d3aa1619c6786fe2a2c8707 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 20:28:35 +0500 Subject: [PATCH 13/34] commit --- phone-book.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index decb7058..a662fc37 100644 --- a/phone-book.js +++ b/phone-book.js @@ -85,9 +85,8 @@ function getData(data, query) { let result = []; const keys = Object.keys(data); for (let i = 0; i < keys.length; i++) { - if (typeof(query) === 'undefined' || data[keys[i]][0] === query || - data[keys[i]][1] === query || query === '@' - && typeof([keys[i]][1]) !== 'undefined') { + if typeof(query) === 'undefined' || ~data[keys[i]][0].indexOf(query) || + typeof([keys[i]][1]) !== 'undefined' && ~data[keys[i]][1].indexOf(query) { result.push(data[keys[i]][0] + ', ' + transform(keys[i]) + (typeof(data[keys[i]][1]) !== 'undefined' ? ', ' + data[keys[i]][1] : '')); } From d764025e706667b2016c78f8f771098fafc61b06 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 20:34:11 +0500 Subject: [PATCH 14/34] commit --- phone-book.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index a662fc37..62412648 100644 --- a/phone-book.js +++ b/phone-book.js @@ -85,8 +85,8 @@ function getData(data, query) { let result = []; const keys = Object.keys(data); for (let i = 0; i < keys.length; i++) { - if typeof(query) === 'undefined' || ~data[keys[i]][0].indexOf(query) || - typeof([keys[i]][1]) !== 'undefined' && ~data[keys[i]][1].indexOf(query) { + if (typeof(query) === 'undefined' || ~data[keys[i]][0].indexOf(query) || + typeof([keys[i]][1]) !== 'undefined' && ~data[keys[i]][1].indexOf(query)) { result.push(data[keys[i]][0] + ', ' + transform(keys[i]) + (typeof(data[keys[i]][1]) !== 'undefined' ? ', ' + data[keys[i]][1] : '')); } From e863dc56c948f4e4701474e71a2592ab4795d5bd Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 20:44:34 +0500 Subject: [PATCH 15/34] commit --- phone-book.js | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/phone-book.js b/phone-book.js index 62412648..2ef215a6 100644 --- a/phone-book.js +++ b/phone-book.js @@ -85,8 +85,8 @@ function getData(data, query) { let result = []; const keys = Object.keys(data); for (let i = 0; i < keys.length; i++) { - if (typeof(query) === 'undefined' || ~data[keys[i]][0].indexOf(query) || - typeof([keys[i]][1]) !== 'undefined' && ~data[keys[i]][1].indexOf(query)) { + if (typeof(query) === 'undefined' || data[keys[i]][0].indexOf(query) !== -1 || + typeof([keys[i]][1]) !== 'undefined' && data[keys[i]][1].indexOf(query) !== -1) { result.push(data[keys[i]][0] + ', ' + transform(keys[i]) + (typeof(data[keys[i]][1]) !== 'undefined' ? ', ' + data[keys[i]][1] : '')); } @@ -118,6 +118,23 @@ function find(query) { return result; } +function csvAdd(data) { + let result = false; + if (checkAll(data[0], data[1], data[2])) { + if (typeof(phoneBook[data[0]]) === 'undefined') { + add(data[0], data[1], data[2]); + result = true; + } else if (phoneBook[data[0]][0] !== data[1] || + phoneBook[data[0]][1] !== data[2]) { + update(data[0], data[1], data[2]); + result = true; + } + } + + return result; +} + + /** * Импорт записей из csv-формата * @star @@ -129,16 +146,7 @@ function importFromCsv(csv) { let count = phones.length; for (let i = 0; i < phones.length; i++) { let data = phones[i].split(';'); - if (checkAll(data[0], data[1], data[2])) { - if (typeof(phoneBook[data[0]]) === 'undefined') { - add(data[0], data[1], data[2]); - } else if (phoneBook[data[0]][0] !== data[1] || - phoneBook[data[0]][1] !== data[2]) { - update(data[0], data[1], data[2]); - } else { - count--; - } - } else { + if (!csvAdd) { count--; } } From c98b96fe5fc66f110e64b52086d5481f2e5abf7e Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 20:48:56 +0500 Subject: [PATCH 16/34] commit --- phone-book.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 2ef215a6..0aa4cca0 100644 --- a/phone-book.js +++ b/phone-book.js @@ -81,12 +81,16 @@ function findAndRemove(query) { return forRemove.length; } +function extraChecking(query, data, keys) { + return typeof(query) === 'undefined' || data[keys[i]][0].indexOf(query) !== -1 || + typeof([keys[i]][1]) !== 'undefined' && data[keys[i]][1].indexOf(query) !== -1; +} + function getData(data, query) { let result = []; const keys = Object.keys(data); for (let i = 0; i < keys.length; i++) { - if (typeof(query) === 'undefined' || data[keys[i]][0].indexOf(query) !== -1 || - typeof([keys[i]][1]) !== 'undefined' && data[keys[i]][1].indexOf(query) !== -1) { + if (extraChecking(query, data, keys)) { result.push(data[keys[i]][0] + ', ' + transform(keys[i]) + (typeof(data[keys[i]][1]) !== 'undefined' ? ', ' + data[keys[i]][1] : '')); } @@ -146,7 +150,7 @@ function importFromCsv(csv) { let count = phones.length; for (let i = 0; i < phones.length; i++) { let data = phones[i].split(';'); - if (!csvAdd) { + if (!csvAdd(data)) { count--; } } From 8ee0ce550696713d6e1c7b6283cb09283c1e474a Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 20:51:38 +0500 Subject: [PATCH 17/34] commit --- phone-book.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 0aa4cca0..dc58d45e 100644 --- a/phone-book.js +++ b/phone-book.js @@ -81,9 +81,9 @@ function findAndRemove(query) { return forRemove.length; } -function extraChecking(query, data, keys) { - return typeof(query) === 'undefined' || data[keys[i]][0].indexOf(query) !== -1 || - typeof([keys[i]][1]) !== 'undefined' && data[keys[i]][1].indexOf(query) !== -1; +function extraChecking(query, data, key) { + return typeof(query) === 'undefined' || data[key][0].indexOf(query) !== -1 || + typeof([key][1]) !== 'undefined' && data[key][1].indexOf(query) !== -1; } function getData(data, query) { From 9a0512b07b911725f7dbcf7a34a8c918dcd073c9 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Thu, 25 Oct 2018 22:09:23 +0500 Subject: [PATCH 18/34] commit --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index dc58d45e..4d89e244 100644 --- a/phone-book.js +++ b/phone-book.js @@ -83,7 +83,7 @@ function findAndRemove(query) { function extraChecking(query, data, key) { return typeof(query) === 'undefined' || data[key][0].indexOf(query) !== -1 || - typeof([key][1]) !== 'undefined' && data[key][1].indexOf(query) !== -1; + typeof(data[key][1]) !== 'undefined' && data[key][1].indexOf(query) !== -1; } function getData(data, query) { From 2c32754db8362fb3718337fd72722284b2750404 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Fri, 26 Oct 2018 14:18:44 +0500 Subject: [PATCH 19/34] commit --- phone-book.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index 4d89e244..b0dc5fcb 100644 --- a/phone-book.js +++ b/phone-book.js @@ -90,7 +90,7 @@ function getData(data, query) { let result = []; const keys = Object.keys(data); for (let i = 0; i < keys.length; i++) { - if (extraChecking(query, data, keys)) { + if (extraChecking(query, data, keys[i])) { result.push(data[keys[i]][0] + ', ' + transform(keys[i]) + (typeof(data[keys[i]][1]) !== 'undefined' ? ', ' + data[keys[i]][1] : '')); } @@ -106,7 +106,7 @@ function getData(data, query) { */ function find(query) { let result = []; - if (query === '*' || query === '555') { + if (query === '*') { result = getData(phoneBook); } else if (query !== '') { if (checkPhone(query) && typeof(phoneBook[query]) !== 'undefined') { From 9a4b5849701fc85ad0218f1c77345ff96e905cc2 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Fri, 26 Oct 2018 14:22:59 +0500 Subject: [PATCH 20/34] commit --- phone-book.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/phone-book.js b/phone-book.js index b0dc5fcb..443a6ea6 100644 --- a/phone-book.js +++ b/phone-book.js @@ -124,13 +124,13 @@ function find(query) { function csvAdd(data) { let result = false; - if (checkAll(data[0], data[1], data[2])) { - if (typeof(phoneBook[data[0]]) === 'undefined') { - add(data[0], data[1], data[2]); + if (checkAll(data[1], data[0], data[2])) { + if (typeof(phoneBook[data[1]]) === 'undefined') { + add(data[1], data[0], data[2]); result = true; - } else if (phoneBook[data[0]][0] !== data[1] || - phoneBook[data[0]][1] !== data[2]) { - update(data[0], data[1], data[2]); + } else if (phoneBook[data[1]][0] !== data[0] || + phoneBook[data[1]][1] !== data[2]) { + update(data[1], data[0], data[2]); result = true; } } From 1c7c98e62232218cbac238a5d9eb50d6d91be896 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Fri, 26 Oct 2018 19:36:00 +0500 Subject: [PATCH 21/34] test --- phone-book.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 443a6ea6..64ea1da7 100644 --- a/phone-book.js +++ b/phone-book.js @@ -82,7 +82,8 @@ function findAndRemove(query) { } function extraChecking(query, data, key) { - return typeof(query) === 'undefined' || data[key][0].indexOf(query) !== -1 || + return typeof(query) === 'undefined' || key.indexOf(query) !== -1 || + data[key][0].indexOf(query) !== -1 || typeof(data[key][1]) !== 'undefined' && data[key][1].indexOf(query) !== -1; } From 503de38a0ea0e7592b4f1f1863b0228fc3cc8382 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Sat, 27 Oct 2018 05:26:58 +0500 Subject: [PATCH 22/34] test --- phone-book.js | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/phone-book.js b/phone-book.js index 64ea1da7..020810b5 100644 --- a/phone-book.js +++ b/phone-book.js @@ -123,22 +123,6 @@ function find(query) { return result; } -function csvAdd(data) { - let result = false; - if (checkAll(data[1], data[0], data[2])) { - if (typeof(phoneBook[data[1]]) === 'undefined') { - add(data[1], data[0], data[2]); - result = true; - } else if (phoneBook[data[1]][0] !== data[0] || - phoneBook[data[1]][1] !== data[2]) { - update(data[1], data[0], data[2]); - result = true; - } - } - - return result; -} - /** * Импорт записей из csv-формата @@ -148,11 +132,11 @@ function csvAdd(data) { */ function importFromCsv(csv) { let phones = csv.split('\n'); - let count = phones.length; + let count = 0; for (let i = 0; i < phones.length; i++) { let data = phones[i].split(';'); - if (!csvAdd(data)) { - count--; + if (add(data[1], data[0], data[2]) || update(data[1], data[0], data[2])) { + count++; } } From 5c0a02a81e57516bc98ca6e26eefa1823086dba4 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Sat, 27 Oct 2018 05:38:15 +0500 Subject: [PATCH 23/34] test --- phone-book.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 020810b5..f3182f12 100644 --- a/phone-book.js +++ b/phone-book.js @@ -58,7 +58,8 @@ function add(phone, name, email) { * @returns {Boolean} */ function update(phone, name, email) { - if (typeof(phoneBook[phone]) !== 'undefined' && checkName(name) && checkEmail(email)) { + if (typeof(phoneBook[phone]) !== 'undefined' && checkName(name) && checkEmail(email) && + (phoneBook[phone][0] !== name || phoneBook[phone][1] !== email)) { phoneBook[phone] = [name, email]; return true; From 436bc9e6b002cac5a0968fea0931e4c441358ea5 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Sat, 27 Oct 2018 19:44:45 +0500 Subject: [PATCH 24/34] test --- phone-book.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index f3182f12..020810b5 100644 --- a/phone-book.js +++ b/phone-book.js @@ -58,8 +58,7 @@ function add(phone, name, email) { * @returns {Boolean} */ function update(phone, name, email) { - if (typeof(phoneBook[phone]) !== 'undefined' && checkName(name) && checkEmail(email) && - (phoneBook[phone][0] !== name || phoneBook[phone][1] !== email)) { + if (typeof(phoneBook[phone]) !== 'undefined' && checkName(name) && checkEmail(email)) { phoneBook[phone] = [name, email]; return true; From 20934c5f9850546c75874b9e918014199c411e28 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Sat, 27 Oct 2018 20:52:08 +0500 Subject: [PATCH 25/34] test --- phone-book.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 020810b5..33da64e1 100644 --- a/phone-book.js +++ b/phone-book.js @@ -20,8 +20,8 @@ function checkName(name) { } function checkEmail(email) { - return typeof(email) === 'undefined' || typeof(email) === 'string' && - /^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test(email); + return typeof(email) === 'undefined' || + /^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test((string)email); } function checkAll(phone, name, email) { @@ -109,7 +109,7 @@ function find(query) { let result = []; if (query === '*') { result = getData(phoneBook); - } else if (query !== '') { + } else if (typeof(query) !== 'undefined' && query.length > 0) { if (checkPhone(query) && typeof(phoneBook[query]) !== 'undefined') { let temp = []; temp[query] = [phoneBook[query][0], phoneBook[query][1]]; From ba154547fc88a01298cf03a07f533c7e88775702 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Sat, 27 Oct 2018 20:55:01 +0500 Subject: [PATCH 26/34] test --- phone-book.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index 33da64e1..4451e231 100644 --- a/phone-book.js +++ b/phone-book.js @@ -20,8 +20,8 @@ function checkName(name) { } function checkEmail(email) { - return typeof(email) === 'undefined' || - /^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test((string)email); + return typeof(email) === 'undefined' || email === '' || + /^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test(email); } function checkAll(phone, name, email) { From 6101a554abf66ded17b59a2c2ade746cb645870c Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Fri, 2 Nov 2018 19:12:43 +0500 Subject: [PATCH 27/34] test --- phone-book.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/phone-book.js b/phone-book.js index 4451e231..7145a8ff 100644 --- a/phone-book.js +++ b/phone-book.js @@ -20,7 +20,7 @@ function checkName(name) { } function checkEmail(email) { - return typeof(email) === 'undefined' || email === '' || + return typeof(email) === 'undefined' || email.length === 0 || /^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test(email); } @@ -110,11 +110,6 @@ function find(query) { if (query === '*') { result = getData(phoneBook); } else if (typeof(query) !== 'undefined' && query.length > 0) { - if (checkPhone(query) && typeof(phoneBook[query]) !== 'undefined') { - let temp = []; - temp[query] = [phoneBook[query][0], phoneBook[query][1]]; - result = getData(temp); - } else { result = getData(phoneBook, query); } } From 1ba185367bfe1c793369de5a4901cb4e9bbf14ac Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Fri, 2 Nov 2018 19:16:19 +0500 Subject: [PATCH 28/34] test --- phone-book.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index 7145a8ff..bf2ea03a 100644 --- a/phone-book.js +++ b/phone-book.js @@ -110,8 +110,7 @@ function find(query) { if (query === '*') { result = getData(phoneBook); } else if (typeof(query) !== 'undefined' && query.length > 0) { - result = getData(phoneBook, query); - } + result = getData(phoneBook, query); } result.sort(); From 4b4dfe5270402a322a9db27c087b74f07fc33d30 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Fri, 2 Nov 2018 19:19:24 +0500 Subject: [PATCH 29/34] test --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index bf2ea03a..5040149c 100644 --- a/phone-book.js +++ b/phone-book.js @@ -4,7 +4,7 @@ * Сделано задание на звездочку * Реализован метод importFromCsv */ -const isStar = true; +const isStar = false; /** * Телефонная книга From cab077349b6b7edfb4318820ce69ce1a71ce5e6b Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Fri, 2 Nov 2018 19:26:14 +0500 Subject: [PATCH 30/34] test --- phone-book.js | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/phone-book.js b/phone-book.js index 5040149c..b07b812e 100644 --- a/phone-book.js +++ b/phone-book.js @@ -4,7 +4,7 @@ * Сделано задание на звездочку * Реализован метод importFromCsv */ -const isStar = false; +const isStar = true; /** * Телефонная книга @@ -19,13 +19,8 @@ function checkName(name) { return typeof(name) === 'string' && name.length > 0; } -function checkEmail(email) { - return typeof(email) === 'undefined' || email.length === 0 || - /^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/.test(email); -} - -function checkAll(phone, name, email) { - return checkPhone(phone) && checkName(name) && checkEmail(email); +function checkAll(phone, name) { + return checkPhone(phone) && checkName(name); } function transform(phone) { @@ -41,7 +36,7 @@ function transform(phone) { * @returns {Boolean} */ function add(phone, name, email) { - if (typeof(phoneBook[phone]) === 'undefined' && checkAll(phone, name, email)) { + if (checkAll(phone, name) && typeof(phoneBook[phone]) === 'undefined') { phoneBook[phone] = [name, email]; return true; @@ -58,7 +53,7 @@ function add(phone, name, email) { * @returns {Boolean} */ function update(phone, name, email) { - if (typeof(phoneBook[phone]) !== 'undefined' && checkName(name) && checkEmail(email)) { + if (checkAll(phone, name) && typeof(phoneBook[phone]) !== 'undefined') { phoneBook[phone] = [name, email]; return true; From b503a30ccb2281280a535e03ae161722a24b28d5 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Sun, 4 Nov 2018 20:18:31 +0500 Subject: [PATCH 31/34] test --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index b07b812e..0701d7cb 100644 --- a/phone-book.js +++ b/phone-book.js @@ -104,7 +104,7 @@ function find(query) { let result = []; if (query === '*') { result = getData(phoneBook); - } else if (typeof(query) !== 'undefined' && query.length > 0) { + } else if (typeof(query) !== 'undefined' && query.trim().length > 0) { result = getData(phoneBook, query); } result.sort(); From 462d34361031132551bf46a3af54005a23c6da15 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Fri, 9 Nov 2018 23:09:07 +0500 Subject: [PATCH 32/34] test --- phone-book.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 0701d7cb..ef3ca77f 100644 --- a/phone-book.js +++ b/phone-book.js @@ -71,15 +71,15 @@ function findAndRemove(query) { let forRemove = find(query); for (let i = 0; i < forRemove.length; i++) { delete phoneBook[forRemove[i].split(', ')[1]]; + phoneBook[forRemove[i].split(', ')[1]] = undefined; } return forRemove.length; } function extraChecking(query, data, key) { - return typeof(query) === 'undefined' || key.indexOf(query) !== -1 || - data[key][0].indexOf(query) !== -1 || - typeof(data[key][1]) !== 'undefined' && data[key][1].indexOf(query) !== -1; + return typeof(query) === 'undefined' || key.indexOf(query) >= 0 || + data[key][0].indexOf(query) >= 0 || data[key][1].indexOf(query) >= 0; } function getData(data, query) { From e4a020196566b00e7883455a35d578049f275ec1 Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Fri, 9 Nov 2018 23:11:01 +0500 Subject: [PATCH 33/34] test --- phone-book.js | 1 - 1 file changed, 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index ef3ca77f..94436e86 100644 --- a/phone-book.js +++ b/phone-book.js @@ -71,7 +71,6 @@ function findAndRemove(query) { let forRemove = find(query); for (let i = 0; i < forRemove.length; i++) { delete phoneBook[forRemove[i].split(', ')[1]]; - phoneBook[forRemove[i].split(', ')[1]] = undefined; } return forRemove.length; From 15796885e41ca0b395ecdd021427947c68a7065c Mon Sep 17 00:00:00 2001 From: SirMajesty Date: Fri, 9 Nov 2018 23:15:06 +0500 Subject: [PATCH 34/34] test --- phone-book.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 94436e86..69cd48a6 100644 --- a/phone-book.js +++ b/phone-book.js @@ -71,6 +71,7 @@ function findAndRemove(query) { let forRemove = find(query); for (let i = 0; i < forRemove.length; i++) { delete phoneBook[forRemove[i].split(', ')[1]]; + phoneBook[forRemove[i].split(', ')[1]] = undefined; } return forRemove.length; @@ -78,7 +79,8 @@ function findAndRemove(query) { function extraChecking(query, data, key) { return typeof(query) === 'undefined' || key.indexOf(query) >= 0 || - data[key][0].indexOf(query) >= 0 || data[key][1].indexOf(query) >= 0; + data[key][0].indexOf(query) >= 0 || + typeof(data[key][1]) !== 'undefined' && data[key][1].indexOf(query) >= 0; } function getData(data, query) {