From 6fdcb9d9c76481cc5b0bfd0038314ec2dbbde718 Mon Sep 17 00:00:00 2001 From: art-ylem Date: Thu, 12 Oct 2017 10:55:18 +0300 Subject: [PATCH 1/8] try1 --- phone-book.js | 113 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 107 insertions(+), 6 deletions(-) diff --git a/phone-book.js b/phone-book.js index 69fb468..931e299 100644 --- a/phone-book.js +++ b/phone-book.js @@ -9,7 +9,7 @@ exports.isStar = true; /** * Телефонная книга */ -var phoneBook; +var phoneBook = []; /** * Добавление записи в телефонную книгу @@ -17,7 +17,27 @@ var phoneBook; * @param {String} name * @param {String} email */ + +var a = true; +function isIncluded(phone) { + for (var i = 0; i < phoneBook.length; i++) { + if (phoneBook[i].phone === phone) { + a = false; + } + + } + + return a; +} exports.add = function (phone, name, email) { + if (name !== '' && name !== undefined && name !== null && isIncluded(phone) && + /^\d{10}$/.test(phone)) { + phoneBook.push({ phone: phone, name: name, email: email }); + + return true; + } + + return false; }; @@ -27,24 +47,105 @@ exports.add = function (phone, name, email) { * @param {String} name * @param {String} email */ -exports.update = function (phone, name, email) { +function upd(phone, name, email, i) { + if (phoneBook[i].phone === phone && name !== undefined && name !== null && name !== '') { + phoneBook[i].name = name; + if (email !== undefined) { + phoneBook[i].email = email; + } else { + phoneBook[i].email = null; + } + } +} +exports.update = function (phone, name, email) { + for (var i = 0; i < phoneBook.length; i++) { + if (upd(phone, name, email, i)) { + return true; + } + } }; /** - * Удаление записей по запросу из телефонной книги + * Поиск записей по запросу в телефонной книге * @param {String} query */ -exports.findAndRemove = function (query) { +var strphone; +var strl = ''; +function strPhone(i) { + strphone = '+7 (' + phoneBook[i].phone.slice(0, 3) + ') ' + + phoneBook[i].phone.slice(3, 6) + '-' + phoneBook[i].phone.slice(6, 8) + + '-' + phoneBook[i].phone.slice(8, 10); + strl = phoneBook[i].name + ',' + strphone + ',' + phoneBook[i].email; +} +function funRegExp(query, list) { + for (var i = 0; i < phoneBook.length; i++) { + var re = new RegExp(query); + if (re.test(phoneBook[i].name) || + re.test(phoneBook[i].phone) || + re.test(phoneBook[i].eamil)) { + strPhone(i); + list.push(strl); + } + } +} + +exports.find = function (query) { + var boola = false; + var list = []; + if (!query || query === '') { + list = []; + boola = false; + } + if (query === '*') { + for (var i = 0; i < phoneBook.length; i++) { + strPhone(i); + list.push(strl); + } + boola = true; + } else { + funRegExp(query, list); + if (list !== []) { + boola = true; + } + + } + + return boola; }; /** - * Поиск записей по запросу в телефонной книге + * Удаление записей по запросу из телефонной книги * @param {String} query */ -exports.find = function (query) { +var count2 = 0; +function findToDel(query) { + for (var i = 0; i < phoneBook.length; i++) { + var re = new RegExp(query); + if (re.test(phoneBook[i].name) || + re.test(phoneBook[i].phone) || + re.test(phoneBook[i].eamil)) { + phoneBook = phoneBook.splice(i, 1); + count2 += 1; + } + } + + return count2; +} +exports.findAndRemove = function (query) { + var count = 0; + if (!query || query === '') { + count = 0; + } else if (query === '*') { + count = phoneBook.length; + phoneBook = phoneBook.splice(0, count); + } else { + findToDel(query); + count = count2; + } + return count; }; /** From d2b3619edef83e72cfedd9c4df08144c9605e7e8 Mon Sep 17 00:00:00 2001 From: art-ylem Date: Thu, 12 Oct 2017 12:42:22 +0300 Subject: [PATCH 2/8] try2 --- phone-book.js | 52 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/phone-book.js b/phone-book.js index 931e299..ff80d17 100644 --- a/phone-book.js +++ b/phone-book.js @@ -46,24 +46,29 @@ exports.add = function (phone, name, email) { * @param {String} phone * @param {String} name * @param {String} email + * @param {Integer} i */ +var boolb = false; function upd(phone, name, email, i) { if (phoneBook[i].phone === phone && name !== undefined && name !== null && name !== '') { phoneBook[i].name = name; - if (email !== undefined) { + if (email !== undefined && name !== null && name !== '') { phoneBook[i].email = email; } else { phoneBook[i].email = null; } + boolb = true; } } exports.update = function (phone, name, email) { for (var i = 0; i < phoneBook.length; i++) { - if (upd(phone, name, email, i)) { - return true; - } + upd(phone, name, email, i); } + console.info(boolb); + + return boolb; + }; /** @@ -76,7 +81,11 @@ function strPhone(i) { strphone = '+7 (' + phoneBook[i].phone.slice(0, 3) + ') ' + phoneBook[i].phone.slice(3, 6) + '-' + phoneBook[i].phone.slice(6, 8) + '-' + phoneBook[i].phone.slice(8, 10); - strl = phoneBook[i].name + ',' + strphone + ',' + phoneBook[i].email; + if (!phoneBook[i].email) { + strl = phoneBook[i].name + ', ' + strphone; + } else { + strl = phoneBook[i].name + ', ' + strphone + ', ' + phoneBook[i].email; + } } function funRegExp(query, list) { @@ -84,7 +93,7 @@ function funRegExp(query, list) { var re = new RegExp(query); if (re.test(phoneBook[i].name) || re.test(phoneBook[i].phone) || - re.test(phoneBook[i].eamil)) { + re.test(phoneBook[i].email)) { strPhone(i); list.push(strl); } @@ -92,60 +101,61 @@ function funRegExp(query, list) { } exports.find = function (query) { - var boola = false; + // var boola = false; var list = []; if (!query || query === '') { list = []; - boola = false; + // boola = false; } if (query === '*') { for (var i = 0; i < phoneBook.length; i++) { strPhone(i); list.push(strl); } - boola = true; + // boola = true; } else { funRegExp(query, list); if (list !== []) { - boola = true; + // boola = true; } } + console.info(list.sort()); - return boola; + // return boola; }; /** * Удаление записей по запросу из телефонной книги * @param {String} query */ -var count2 = 0; +var phoneBook2 = phoneBook; +var count = 0; function findToDel(query) { for (var i = 0; i < phoneBook.length; i++) { var re = new RegExp(query); if (re.test(phoneBook[i].name) || re.test(phoneBook[i].phone) || - re.test(phoneBook[i].eamil)) { - phoneBook = phoneBook.splice(i, 1); - count2 += 1; + re.test(phoneBook[i].email)) { + phoneBook2 = phoneBook2.splice(i, 1); + // count += 1; + // console.info(count); } } - - return count2; } + exports.findAndRemove = function (query) { - var count = 0; if (!query || query === '') { count = 0; } else if (query === '*') { count = phoneBook.length; phoneBook = phoneBook.splice(0, count); } else { - findToDel(query); - count = count2; + findToDel(query, phoneBook2); + count = phoneBook.length - phoneBook2.length; } - return count; + console.info(count); }; /** From 0b69096f39d631494314a7219cc4bd120c92cd20 Mon Sep 17 00:00:00 2001 From: art-ylem Date: Thu, 12 Oct 2017 13:06:27 +0300 Subject: [PATCH 3/8] try3 --- phone-book.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/phone-book.js b/phone-book.js index ff80d17..3c160be 100644 --- a/phone-book.js +++ b/phone-book.js @@ -65,7 +65,7 @@ exports.update = function (phone, name, email) { for (var i = 0; i < phoneBook.length; i++) { upd(phone, name, email, i); } - console.info(boolb); + // console.info(boolb); return boolb; @@ -120,7 +120,8 @@ exports.find = function (query) { } } - console.info(list.sort()); + + return list.sort(); // return boola; }; @@ -155,7 +156,7 @@ exports.findAndRemove = function (query) { count = phoneBook.length - phoneBook2.length; } - console.info(count); + return count; }; /** @@ -164,10 +165,10 @@ exports.findAndRemove = function (query) { * @param {String} csv * @returns {Number} – количество добавленных и обновленных записей */ -exports.importFromCsv = function (csv) { - // Парсим csv - // Добавляем в телефонную книгу - // Либо обновляем, если запись с таким телефоном уже существует +// exports.importFromCsv = function (csv) { +// // Парсим csv +// // Добавляем в телефонную книгу +// // Либо обновляем, если запись с таким телефоном уже существует - return csv.split('\n').length; -}; +// return csv.split('\n').length; +// }; From 65ee43cb3ff1899d09d6f585e5f92a4caecd0d60 Mon Sep 17 00:00:00 2001 From: art-ylem Date: Thu, 12 Oct 2017 13:10:41 +0300 Subject: [PATCH 4/8] try4 --- phone-book.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/phone-book.js b/phone-book.js index 3c160be..a80c4a9 100644 --- a/phone-book.js +++ b/phone-book.js @@ -4,7 +4,7 @@ * Сделано задание на звездочку * Реализован метод importFromCsv */ -exports.isStar = true; +exports.isStar = false; /** * Телефонная книга @@ -165,10 +165,10 @@ exports.findAndRemove = function (query) { * @param {String} csv * @returns {Number} – количество добавленных и обновленных записей */ -// exports.importFromCsv = function (csv) { -// // Парсим csv -// // Добавляем в телефонную книгу -// // Либо обновляем, если запись с таким телефоном уже существует +exports.importFromCsv = function (csv) { + // Парсим csv + // Добавляем в телефонную книгу + // Либо обновляем, если запись с таким телефоном уже существует -// return csv.split('\n').length; -// }; + return csv.split('\n').length; +}; From 31be914e4ab8a2ad702ed7f35b87cb845605d415 Mon Sep 17 00:00:00 2001 From: art-ylem Date: Thu, 12 Oct 2017 13:16:07 +0300 Subject: [PATCH 5/8] try4.1 --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index a80c4a9..5c30344 100644 --- a/phone-book.js +++ b/phone-book.js @@ -32,7 +32,7 @@ function isIncluded(phone) { exports.add = function (phone, name, email) { if (name !== '' && name !== undefined && name !== null && isIncluded(phone) && /^\d{10}$/.test(phone)) { - phoneBook.push({ phone: phone, name: name, email: email }); + phoneBook.push({ phone: phone, name: name, email: email === '' ? undefined : email }); return true; } From c4d425cf115b331ee0c99e3c7cd69a9cc8a93894 Mon Sep 17 00:00:00 2001 From: art-ylem Date: Thu, 12 Oct 2017 13:31:55 +0300 Subject: [PATCH 6/8] try4.2 --- phone-book.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 5c30344..24bd249 100644 --- a/phone-book.js +++ b/phone-book.js @@ -24,15 +24,14 @@ function isIncluded(phone) { if (phoneBook[i].phone === phone) { a = false; } - } return a; } exports.add = function (phone, name, email) { if (name !== '' && name !== undefined && name !== null && isIncluded(phone) && - /^\d{10}$/.test(phone)) { - phoneBook.push({ phone: phone, name: name, email: email === '' ? undefined : email }); + /^\d{10}$/.test(phone) && typeof(email) === 'string') { + phoneBook.push({ phone: phone, name: name, email: email }); return true; } From 0da366ea505356938e2faad47d783d8f3db6ebe3 Mon Sep 17 00:00:00 2001 From: art-ylem Date: Thu, 12 Oct 2017 13:52:18 +0300 Subject: [PATCH 7/8] try4.3 --- phone-book.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index 24bd249..f4bd0d2 100644 --- a/phone-book.js +++ b/phone-book.js @@ -24,14 +24,23 @@ function isIncluded(phone) { if (phoneBook[i].phone === phone) { a = false; } + } return a; } +function emailIsTrue(query) { + return /^[a-z0-9-]+@[a-z0-9]+\.[a-z0-9]+$/i.test(query); +} + exports.add = function (phone, name, email) { if (name !== '' && name !== undefined && name !== null && isIncluded(phone) && - /^\d{10}$/.test(phone) && typeof(email) === 'string') { - phoneBook.push({ phone: phone, name: name, email: email }); + /^\d{10}$/.test(phone)) { + if (emailIsTrue(email)) { + phoneBook.push({ phone: phone, name: name, email: email }); + } else { + phoneBook.push({ phone: phone, name: name }); + } return true; } From 69709beb5e8a52a9a4b3da023bb2e00a143363ee Mon Sep 17 00:00:00 2001 From: art-ylem Date: Thu, 12 Oct 2017 13:58:38 +0300 Subject: [PATCH 8/8] try4.4 --- phone-book.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/phone-book.js b/phone-book.js index f4bd0d2..1b79220 100644 --- a/phone-book.js +++ b/phone-book.js @@ -29,14 +29,10 @@ function isIncluded(phone) { return a; } -function emailIsTrue(query) { - return /^[a-z0-9-]+@[a-z0-9]+\.[a-z0-9]+$/i.test(query); -} - exports.add = function (phone, name, email) { if (name !== '' && name !== undefined && name !== null && isIncluded(phone) && /^\d{10}$/.test(phone)) { - if (emailIsTrue(email)) { + if (/^[a-z0-9-]+@[a-z0-9-]+\.[a-z0-9-]+$/i.test(email)) { phoneBook.push({ phone: phone, name: name, email: email }); } else { phoneBook.push({ phone: phone, name: name });