diff --git a/6.nodejs_js/html/a.html b/6.nodejs_js/html/a.html new file mode 100644 index 0000000..51aba75 --- /dev/null +++ b/6.nodejs_js/html/a.html @@ -0,0 +1,2 @@ +
asd
+asd
\ No newline at end of file diff --git a/6.nodejs_js/html/asd.htm b/6.nodejs_js/html/asd.htm new file mode 100644 index 0000000..33c2bc2 --- /dev/null +++ b/6.nodejs_js/html/asd.htm @@ -0,0 +1 @@ +89898
\ No newline at end of file diff --git a/6.nodejs_js/index.js b/6.nodejs_js/index.js new file mode 100644 index 0000000..bd8c2e3 --- /dev/null +++ b/6.nodejs_js/index.js @@ -0,0 +1,49 @@ +const path = require("path"); +const fs = require("fs"); +const PATH_TO_HTML_DIR = path.join(__dirname, "html"); // Путь до папки с .html/.htm файлами + +function getHtmlFilesList () { // Получаем список .html .htm файлов + return fs.readdirSync(PATH_TO_HTML_DIR).filter(file => { + let fileExtension = file.split('.')[file.length - 1]; + + return ['html', 'htm'].indexOf(fileExtension) == -1; // Проверяем, чтобы расширение файла находилось в списке (['html', 'htm']) + }).map(file => path.join(PATH_TO_HTML_DIR, file)); +} + +function getCountParagraphs (htmlCode) { // Посчитать количество тэгов
+ /*
+ Ps: в виду того, что задание не предалагает конкретный парсинг HTML, модгут возникнуть ошибки в местах содержащих примерно следующее: {
+ let data = fs.readFileSync(file, {encoding:'utf8'});
+ return {
+ file : file,
+ countParagraphs : getCountParagraphs(data)
+ };
+ });
+
+ return "Статистика:\n=============================\n" + countsParagraph.map(i => `Файл: ${i.file}\nКоличество : ${i.countParagraphs}`).join('\n') + `\n=============================\nВсего: ${sum(countsParagraph.map(i => i.countParagraphs))}`;
+}
+
+console.log(getParagraphStats());
\ No newline at end of file
diff --git a/6.nodejs_js/package-lock.json b/6.nodejs_js/package-lock.json
new file mode 100644
index 0000000..7339603
--- /dev/null
+++ b/6.nodejs_js/package-lock.json
@@ -0,0 +1,93 @@
+{
+ "name": "6.nodejs_js",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "fs": "^0.0.1-security",
+ "os": "^0.1.2",
+ "path": "^0.12.7"
+ }
+ },
+ "node_modules/fs": {
+ "version": "0.0.1-security",
+ "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
+ "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
+ },
+ "node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+ },
+ "node_modules/os": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz",
+ "integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ=="
+ },
+ "node_modules/path": {
+ "version": "0.12.7",
+ "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
+ "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
+ "dependencies": {
+ "process": "^0.11.1",
+ "util": "^0.10.3"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+ "dependencies": {
+ "inherits": "2.0.3"
+ }
+ }
+ },
+ "dependencies": {
+ "fs": {
+ "version": "0.0.1-security",
+ "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
+ "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w=="
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+ },
+ "os": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz",
+ "integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ=="
+ },
+ "path": {
+ "version": "0.12.7",
+ "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
+ "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
+ "requires": {
+ "process": "^0.11.1",
+ "util": "^0.10.3"
+ }
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
+ },
+ "util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ }
+ }
+}
diff --git a/6.nodejs_js/package.json b/6.nodejs_js/package.json
new file mode 100644
index 0000000..aa8565b
--- /dev/null
+++ b/6.nodejs_js/package.json
@@ -0,0 +1,7 @@
+{
+ "dependencies": {
+ "fs": "^0.0.1-security",
+ "os": "^0.1.2",
+ "path": "^0.12.7"
+ }
+}
diff --git a/6.nodejs_js/readme.md b/6.nodejs_js/readme.md
index 95e8d38..969ecc0 100644
--- a/6.nodejs_js/readme.md
+++ b/6.nodejs_js/readme.md
@@ -1,9 +1,61 @@
# Блок заданий "Задание, Java Script, Node JS:" (6)
6. Установите node.js (https://nodejs.org/en/, версия LTS например, хотя не важно).
-Используйте документацию (https://nodejs.org/dist/latest-v16.x/docs/api/, точнее описание использования модуля "fs" https://nodejs.org/dist/latest-v16.x/docs/api/fs.html) для создания модуля (файла "*.js") который будет выполнять следующие действия:
+Используйте документацию (https://nodejs.org/dist/latest-v16.x/docs/api/, точнее описание использования модуля "fs" https://nodejs.org/dist/latest-v16.x/docs/api/fs.html) для создания модуля (файла "\*.js") который будет выполнять следующие действия:
```
1) получать список всех файлов '*.html' и '*.htm' в некоторой папке (путь к папке можно захардкодить в константу в шапке модуля) (см. fs.readdir / fs.readdirSync);
2) читать каждый файл полученный в п.1 (см. fs.readFile / fs.readFileSync);
3) разбирать прочитанный файл, получать информацию о количестве параграфов (тегов ...
+ /*
+ Ps: в виду того, что задание не предалагает конкретный парсинг HTML, модгут возникнуть ошибки в местах содержащих примерно следующее: {
+ let data = fs.readFileSync(file, {encoding:'utf8'});
+ return {
+ file : file,
+ countParagraphs : getCountParagraphs(data)
+ };
+ });
+
+ return "Статистика:\n=============================\n" + countsParagraph.map(i => `Файл: ${i.file}\nКоличество : ${i.countParagraphs}`).join('\n') + `\n=============================\nВсего: ${sum(countsParagraph.map(i => i.countParagraphs))}`;
+}
+
+console.log(getParagraphStats());
```
\ No newline at end of file
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..2e95d3b
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,3 @@
+# Тестовое задание на должность "Стажёр-программист"
+Поскольку документ с тестовым заданием разбит на два блока: PHP и NodeJS/JavaScript, все папки были названы соответствующим образом и пронумерованы в соответствии с номерами заданий в блоках.
+Например папка 1.php это задание 1 в блоке PHP, папка 3.nodejs_js это задание 3 в блоке NodeJS/JavaScript и т.д. Все объяснения выполнения задания были даны в readme.md каждой папки.
\ No newline at end of file