diff --git a/js-core/homeworks/homework-19/cat.html b/js-core/homeworks/homework-19/cat.html
new file mode 100644
index 0000000..8436e0e
--- /dev/null
+++ b/js-core/homeworks/homework-19/cat.html
@@ -0,0 +1,9 @@
+
+
+
+ cat
+
+
+
+
+
\ No newline at end of file
diff --git a/js-core/homeworks/homework-19/index.html b/js-core/homeworks/homework-19/index.html
new file mode 100644
index 0000000..a78971b
--- /dev/null
+++ b/js-core/homeworks/homework-19/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+ Home work 19
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js-core/homeworks/homework-19/node.js b/js-core/homeworks/homework-19/node.js
new file mode 100644
index 0000000..045ac87
--- /dev/null
+++ b/js-core/homeworks/homework-19/node.js
@@ -0,0 +1,23 @@
+const http = require('http');
+const fs = require('fs');
+const port = 3000;
+
+http.createServer( (request, response) =>{
+ let path = request.url;
+ if(path == '/'){
+ path = '/index.html';
+ }
+ let source = '';
+ if (fs.existsSync('.' + path)) {
+ source = fs.readFileSync('.' + path);
+ }else{
+ source = 'no such resource';
+ response.statusCode = 404;
+ }
+ response.end(source);
+}).listen(port, (err) => {
+ if (err) {
+ return console.log('something bad happened', err);
+ }
+ console.log(`server is listening on ${port}`)
+})
diff --git a/js-core/homeworks/homework-19/src/main.js b/js-core/homeworks/homework-19/src/main.js
new file mode 100644
index 0000000..ede8f08
--- /dev/null
+++ b/js-core/homeworks/homework-19/src/main.js
@@ -0,0 +1,70 @@
+/* task 0
+Даны строки разделенные различным образом,
+верните строки разделенные / или _, в нижнем регистре
+solution("ActiveModel::Errors") => active_model/errors"
+solution("HelloHowAreYou") => "hello_how_are_you"
+solution("MyNAMEIsBOND-JamesBond") => my_name_is_bond_james_bond"
+solution("MAINCompany::BEST-MAINUser") => "main_company/best_main_user"
+*/
+
+let solution = string => {
+ string = string.replace('::','/');
+ string = string.replace('-','_');
+ let lastModifiedLetterPosition = -2;
+ const splitAndLower = (match, p1,offset, string) => {
+ const nextLetter = string.charAt(offset + 1);
+ const prevLetter = string.charAt(offset - 1);
+ const isNexLetterSmall = nextLetter.toLowerCase() === nextLetter;
+ const isNexLetterSubSplitter = nextLetter === '_';
+ const isPrevLetterSplitter = prevLetter === '/';
+ const isPrevLetterSubSplitter = prevLetter === '_';
+ const noSplitter = (
+ offset == 0 ||
+ offset == lastModifiedLetterPosition + 1 && (!isNexLetterSmall || isNexLetterSubSplitter) ||
+ isPrevLetterSplitter ||
+ isPrevLetterSubSplitter
+ );
+ const splitter = noSplitter ? '' : '_';
+ lastModifiedLetterPosition = offset;
+ return splitter + p1.toLowerCase();
+ }
+ string = string.replace(/([A-Z])/gm,splitAndLower);
+ return string;
+}
+console.log("ActiveModel::Errors => ",solution("ActiveModel::Errors"));
+console.log("HelloHowAreYou => ",solution("HelloHowAreYou"));
+console.log("MyNAMEIsBOND-JamesBond => ",solution("MyNAMEIsBOND-JamesBond"));
+console.log("MAINCompany::BEST-MAINUser => ",solution("MAINCompany::BEST-MAINUser"));
+
+/* TASK 0.5
+ ГОТОВО: Добавить кота в ваш КОД в Node.js !!
+ КОТА ОСТАВИТЬ
+ Добавить проверку на существование файла
+*/
+
+
+/* TASK 1
+По приложению phone-book;
+1. Для каждой страницы у вас должен быть класс с одноименным названием
+в отдельном файле
+2. Каждый класс должен содержать методы render() - который рендерит всю страницу
+3. Удалить jquery.js и bootstrap.js с проекта
+-> Закончить keypad с прошлого занятия, добавить функционал для удаления номера
+Сортировка таблицы!
+Визуализировать страницы Edit contact, User, Add User;
+TASK 2
+1. keypad - сделать чтобы номер можно было набрать с клавиатуры (!)
+2. Формат номера должен быть таким (099)-17-38-170
+*/
+
+/*
+TASK 3
+edit-contact,
+- сделать данные редактируемыми (атрибут contentEditable) // input
+- изменять backgroundColor
+add-user при клике:
+index.html/contacts.html - в поле search при вводе буквы,
+добавить поиск по имени если имя включает хотя бы одну эту букву.
+после ввода каждого символа, фильтровать отображаемых пользователей.
+При удалении всех символов отобразить снова весь список
+*/
\ No newline at end of file