From ecf29aee94550df160db0bbc4f01775be32e415c Mon Sep 17 00:00:00 2001 From: belozerov-yaroslav Date: Tue, 4 Mar 2025 17:56:15 +0500 Subject: [PATCH 01/10] 2nd task --- index.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/index.js b/index.js index 8635050..df2ea03 100644 --- a/index.js +++ b/index.js @@ -16,6 +16,15 @@ function processCommand(command) { case 'exit': process.exit(0); break; + case 'show': + let todos = getFiles(); + res = []; + for (let file_string of todos){ + res.push(file_string.split('\r\n').filter((word) => word.trim().startsWith("// TODO"))); + } + console.log(res); + process.exit(0); + break; default: console.log('wrong command'); break; From 5a5bdd35fdd36f273d67ddbe81f60cb347da142c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= <145160988+lyubdim@users.noreply.github.com> Date: Tue, 4 Mar 2025 18:09:01 +0500 Subject: [PATCH 02/10] =?UTF-8?q?3=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index df2ea03..460a813 100644 --- a/index.js +++ b/index.js @@ -11,16 +11,29 @@ function getFiles() { return filePaths.map(path => readFile(path)); } +function getToDos() { + let todos = getFiles(); + let res = []; + for (let file_string of todos) { + res.push(file_string.split('\r\n').filter((word) => word.trim().startsWith("// TODO"))); + } + return res; +} + function processCommand(command) { switch (command) { case 'exit': process.exit(0); break; case 'show': - let todos = getFiles(); - res = []; - for (let file_string of todos){ - res.push(file_string.split('\r\n').filter((word) => word.trim().startsWith("// TODO"))); + console.log(getToDos()); + process.exit(0); + break; + case 'important': + let res = [] + let toDo = getToDos() + for (let file_string of toDo) { + res.push(file_string.filter(str => str.includes("!"))) } console.log(res); process.exit(0); From 891915f93d5e9bb8021a5402bf58a5e05aecb52f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= <145160988+lyubdim@users.noreply.github.com> Date: Tue, 4 Mar 2025 18:09:22 +0500 Subject: [PATCH 03/10] =?UTF-8?q?3=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 ++++++++ .idea/material_theme_project_new.xml | 13 +++++++++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ .idea/web3.iml | 12 ++++++++++++ 5 files changed, 47 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/material_theme_project_new.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/web3.iml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/material_theme_project_new.xml b/.idea/material_theme_project_new.xml new file mode 100644 index 0000000..a22287e --- /dev/null +++ b/.idea/material_theme_project_new.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..33ec5dd --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/web3.iml b/.idea/web3.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/web3.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file From c6c5604e6b8049e448793a65081a96986fc84972 Mon Sep 17 00:00:00 2001 From: belozerov-yaroslav Date: Tue, 4 Mar 2025 18:19:15 +0500 Subject: [PATCH 04/10] 4st task --- index.js | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index df2ea03..7d634d5 100644 --- a/index.js +++ b/index.js @@ -11,16 +11,33 @@ function getFiles() { return filePaths.map(path => readFile(path)); } + +function getToDos(){ + let todos = getFiles(); + let res = []; + for (let file_string of todos){ + res.push(file_string.split('\r\n').filter((word) => word.trim().includes("// TODO")).map(word => word.slice(word.indexOf("//")))); + } + return res; +} + + function processCommand(command) { - switch (command) { + cmd = command.split(" ")[0] + switch (cmd) { case 'exit': process.exit(0); break; case 'show': - let todos = getFiles(); - res = []; - for (let file_string of todos){ - res.push(file_string.split('\r\n').filter((word) => word.trim().startsWith("// TODO"))); + console.log(getToDos()); + process.exit(0); + break; + case "user": + let todos = getToDos(); + let arg = command.split(" ")[1]; + let res = []; + for (let file_res of todos){ + res.push(file_res.filter((word) => word.split(';')[0].split(" ")[2] === arg)); } console.log(res); process.exit(0); From e056990f1b71e421d83aadc4dc2f13e55e533040 Mon Sep 17 00:00:00 2001 From: belozerov-yaroslav Date: Tue, 4 Mar 2025 18:21:44 +0500 Subject: [PATCH 05/10] ready to next --- index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 125fdd2..c39d7a1 100644 --- a/index.js +++ b/index.js @@ -24,6 +24,7 @@ function getToDos(){ function processCommand(command) { cmd = command.split(" ")[0] + let res = []; switch (cmd) { case 'exit': process.exit(0); @@ -35,11 +36,15 @@ function processCommand(command) { case "user": let todos = getToDos(); let arg = command.split(" ")[1]; - let res = []; + res = []; for (let file_res of todos){ res.push(file_res.filter((word) => word.split(';')[0].split(" ")[2] === arg)); + } + console.log(res); + process.exit(0); + break; case 'important': - let res = [] + res = [] let toDo = getToDos() for (let file_string of toDo) { res.push(file_string.filter(str => str.includes("!"))) From a6a640ef50d7fe08fc1a2d6308f5432054ca3771 Mon Sep 17 00:00:00 2001 From: belozerov-yaroslav Date: Tue, 4 Mar 2025 18:28:22 +0500 Subject: [PATCH 06/10] refactoring --- index.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index c39d7a1..b60a249 100644 --- a/index.js +++ b/index.js @@ -16,7 +16,7 @@ function getToDos(){ let todos = getFiles(); let res = []; for (let file_string of todos){ - res.push(file_string.split('\r\n').filter((word) => word.trim().includes("// TODO")).map(word => word.slice(word.indexOf("//")))); + res.push(...file_string.split('\r\n').filter((word) => word.trim().includes("// TODO")).map(word => word.slice(word.indexOf("//")))); } return res; } @@ -37,21 +37,25 @@ function processCommand(command) { let todos = getToDos(); let arg = command.split(" ")[1]; res = []; - for (let file_res of todos){ - res.push(file_res.filter((word) => word.split(';')[0].split(" ")[2] === arg)); - } - console.log(res); + console.log(todos.filter((word) => word.split(';')[0].split(" ")[2] === arg)); process.exit(0); break; case 'important': res = [] let toDo = getToDos() - for (let file_string of toDo) { - res.push(file_string.filter(str => str.includes("!"))) - } - console.log(res); + console.log(toDo.filter(str => str.includes("!"))); process.exit(0); break; + case "sort": + arg = command.split(" ")[1]; + switch (arg){ + case "importance": + break; + case "user": + break; + case "date": + break; + } default: console.log('wrong command'); break; From 1c93b39f02f13485621a08f3efe5bbf302a76a9d Mon Sep 17 00:00:00 2001 From: belozerov-yaroslav Date: Tue, 4 Mar 2025 18:42:32 +0500 Subject: [PATCH 07/10] user sort --- fileSystem.js | 1 + index.js | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/fileSystem.js b/fileSystem.js index b09f52f..aa981ca 100644 --- a/fileSystem.js +++ b/fileSystem.js @@ -21,6 +21,7 @@ function readFile(filePath) { } // TODO Digi; 2018-09-21; Добавить функцию getFileName, которая по пути файла будет возвращать его имя. Воспользоваться модулем path из Node.js +// TODO Digi; 2018-09-22; smth module.exports = { getAllFilePathsWithExtension, diff --git a/index.js b/index.js index b60a249..8935f20 100644 --- a/index.js +++ b/index.js @@ -22,6 +22,11 @@ function getToDos(){ } +function getUserComments(todos, userName){ + return todos.filter((word) => word.split(';')[0].split(" ")[2] === userName); +} + + function processCommand(command) { cmd = command.split(" ")[0] let res = []; @@ -36,8 +41,7 @@ function processCommand(command) { case "user": let todos = getToDos(); let arg = command.split(" ")[1]; - res = []; - console.log(todos.filter((word) => word.split(';')[0].split(" ")[2] === arg)); + console.log(getUserComments(todos, arg)); process.exit(0); break; case 'important': @@ -47,15 +51,20 @@ function processCommand(command) { process.exit(0); break; case "sort": - arg = command.split(" ")[1]; - switch (arg){ + let arg2 = command.split(" ")[1]; + switch (arg2){ case "importance": break; case "user": + let todos = getToDos(); + let userComments = todos.filter(word => word.split(";").length === 3 && word.split(";")[0].split(" ").length > 2).sort(); + console.log(userComments); + console.log(todos.filter(word => !userComments.includes(word))); break; case "date": break; } + break; default: console.log('wrong command'); break; From 3990648ac4ddb4c19c1910e93e16d318b9248a03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= <145160988+lyubdim@users.noreply.github.com> Date: Tue, 4 Mar 2025 18:42:37 +0500 Subject: [PATCH 08/10] importance --- index.js | 47 +++++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/index.js b/index.js index b60a249..6a8a8a8 100644 --- a/index.js +++ b/index.js @@ -12,15 +12,20 @@ function getFiles() { } -function getToDos(){ +function getToDos() { let todos = getFiles(); let res = []; - for (let file_string of todos){ + for (let file_string of todos) { res.push(...file_string.split('\r\n').filter((word) => word.trim().includes("// TODO")).map(word => word.slice(word.indexOf("//")))); } return res; } +function getExclamationString() { + let toDo = getToDos() + return toDo.filter(str => str.includes("!")); +} + function processCommand(command) { cmd = command.split(" ")[0] @@ -32,7 +37,7 @@ function processCommand(command) { case 'show': console.log(getToDos()); process.exit(0); - break; + break; // TODO digi; 2016-04-08; добавить writeLine!!!!! case "user": let todos = getToDos(); let arg = command.split(" ")[1]; @@ -41,25 +46,35 @@ function processCommand(command) { process.exit(0); break; case 'important': - res = [] - let toDo = getToDos() - console.log(toDo.filter(str => str.includes("!"))); + console.log(getExclamationString()); process.exit(0); break; case "sort": - arg = command.split(" ")[1]; - switch (arg){ + let arg2 = command.split(" ")[1]; + switch (arg2) { case "importance": + let strings = getExclamationString(); + const sortedStrings = strings.sort((a, b) => { + const countA = a.split('!').length - 1; + const countB = b.split('!').length - 1; + return countB - countA; + }); + console.log(sortedStrings); + break; + case + "user" + : break; - case "user": + case + "date" + : break; - case "date": - break; - } - default: - console.log('wrong command'); - break; + } + break; + default: + console.log('wrong command'); + break; + } } -} // TODO you can do it! From f1ae8919235dec80aaa31587c8375dd7ba58e47e Mon Sep 17 00:00:00 2001 From: belozerov-yaroslav Date: Tue, 4 Mar 2025 18:55:46 +0500 Subject: [PATCH 09/10] smth --- index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/index.js b/index.js index 8935f20..afc11ef 100644 --- a/index.js +++ b/index.js @@ -62,6 +62,19 @@ function processCommand(command) { console.log(todos.filter(word => !userComments.includes(word))); break; case "date": + let temp_res = getToDos().filter(word => word.split(";").length === 3).sort((word1, word2) => { + let date1 = new Date(word1.split(";")[1]); + let date2 = new Date(word2.split(";")[1]); + if (date1 === date2){ + return 0; + } + if (date1 > date2){ + return -1; + } + return 1; + }); + console.log(temp_res); + console.log(getToDos().filter(word => !temp_res.includes(word))); break; } break; From 2e15bb936c2b79613827825530947c286ca5fa14 Mon Sep 17 00:00:00 2001 From: belozerov-yaroslav Date: Tue, 4 Mar 2025 19:16:43 +0500 Subject: [PATCH 10/10] 7, 8, 9 --- index.js | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index beac34d..13b5c9b 100644 --- a/index.js +++ b/index.js @@ -32,6 +32,22 @@ function getUserComments(todos, userName){ } +function printTable(table){ + let max1column = 0; + let max2column = 0; + let max3column = 0; + for (let line of table){ + max1column = Math.max(max1column, line.split(';')[0].trim().length); + max2column = Math.max(max2column, line.split(';')[1].trim().length); + max3column = Math.max(max3column, line.split(';')[2].trim().length); + } + console.log(` ! | ${"user".padEnd(max1column, " ")} | ${ "date".padEnd(max2column, " ")} | ${"comment".padEnd(max3column, " ")}`); + for (let line of table){ + console.log(` ${ line.includes('!') ? "!" : " " } | ${line.split(";")[0].trim().padEnd(max1column, " ")} | ${line.split(";")[1].trim().padEnd(max2column, " ")} | ${line.split(";")[2].trim().padEnd(max3column, " ")}`); + } +} + + function processCommand(command) { cmd = command.split(" ")[0] let res = []; @@ -46,7 +62,7 @@ function processCommand(command) { case "user": let todos = getToDos(); let arg = command.split(" ")[1]; - console.log(getUserComments(todos, arg)); + printTable(getUserComments(todos, arg)); process.exit(0); break; case 'important': @@ -68,7 +84,7 @@ function processCommand(command) { case "user": let todos = getToDos(); let userComments = todos.filter(word => word.split(";").length === 3 && word.split(";")[0].split(" ").length > 2).sort(); - console.log(userComments); + printTable(userComments); console.log(todos.filter(word => !userComments.includes(word))); break; case "date": @@ -83,7 +99,7 @@ function processCommand(command) { } return 1; }); - console.log(temp_res); + printTable(temp_res); console.log(getToDos().filter(word => !temp_res.includes(word))); break; } @@ -95,3 +111,4 @@ function processCommand(command) { } // TODO you can do it! +