diff --git a/js-core/homeworks/homework-19/cat.jpg b/js-core/homeworks/homework-19/cat.jpg new file mode 100644 index 0000000..5739600 Binary files /dev/null and b/js-core/homeworks/homework-19/cat.jpg differ diff --git a/js-core/homeworks/homework-19/index.html b/js-core/homeworks/homework-19/index.html new file mode 100644 index 0000000..e3c257e --- /dev/null +++ b/js-core/homeworks/homework-19/index.html @@ -0,0 +1,11 @@ + + + + + Home work 19 + + +

Server test:

+ + + \ No newline at end of file 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..147fb01 --- /dev/null +++ b/js-core/homeworks/homework-19/src/main.js @@ -0,0 +1,128 @@ +/* +Даны строки разделенные различным образом, +верните строки разделенные / или _, в нижнем регистре +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" +*/ + +const isLowerCase = (letter) => { + if(letter === undefined) { + return false; + } + const compareLetter = letter.toLowerCase(); + return letter === compareLetter; +} + +const isUpperCase = (letter) => { + if(letter === undefined) { + return false; + } + const compareLetter = letter.toUpperCase(); + return letter === compareLetter; +} + +const solution = (str) => { + const replacedColon = str.replace(/::/, '/'); + const replacedDash = replacedColon.replace(/-/, '_'); + + const spliteddStr = replacedDash.split('') + let output = ''; + + spliteddStr.forEach((letter, index, arr) => { + const nextLetter = arr[index + 1]; + const prevLetter = arr[index - 1]; + const isNotStr = /\W/; + + if(isNotStr.test(letter)) { + output += letter; + return; + } + + if(letter === '_') { + return; + } + + if(isLowerCase(letter)) { + output += letter; + return; + } + + if(prevLetter === '/' || letter === '/') { + const changedLetter = letter.toLowerCase(); + output += changedLetter; + return; + } + + if(isUpperCase(letter) && isLowerCase(prevLetter) && isUpperCase(nextLetter)) { + const changedLetter = letter.toLowerCase(); + output += '_' + changedLetter; + return; + } + + if(isUpperCase(letter) && index === 0) { + const changedLetter = letter.toLowerCase(); + output += changedLetter; + return; + } + + if(isUpperCase(letter) && isUpperCase(nextLetter)) { + const changedLetter = letter.toLowerCase(); + output += changedLetter; + return; + } + + if(isUpperCase(letter) && isLowerCase(nextLetter) && isUpperCase(prevLetter)) { + const changedLetter = letter.toLowerCase(); + output += '_' + changedLetter; + return; + } + + if(isUpperCase(letter) && isLowerCase(prevLetter)) { + const changedLetter = '_' + letter.toLowerCase(); + output += changedLetter; + return; + } + + }); + + return output; +} + +console.log(solution("MAINCompany::BEST-MAINUser")); +console.log(solution("MyNAMEIsBOND-JamesBond")); +console.log(solution("HelloHowAreYou")); +console.log(solution("ActiveModel::Errors")); + +/* 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 при вводе буквы, +добавить поиск по имени если имя включает хотя бы одну эту букву. +после ввода каждого символа, фильтровать отображаемых пользователей. +При удалении всех символов отобразить снова весь список +*/ diff --git a/js-core/homeworks/homework-19/task-0.5/server.js b/js-core/homeworks/homework-19/task-0.5/server.js new file mode 100644 index 0000000..59b0bb6 --- /dev/null +++ b/js-core/homeworks/homework-19/task-0.5/server.js @@ -0,0 +1,25 @@ +const http = require('http'); +const fs = require('fs'); +const port = 3000; + +const requestHandler = (request, response) => { + let path = request.url; + + if(path == '/'){ + path = '/index.html'; + } + + let index = fs.readFileSync(`.${path}`); + + response.end(index); +}; + +const server = http.createServer(requestHandler); + +server.listen(port, (err) => { + if (err) { + return console.log('something bad happened', err) + } + console.log(`http://localhost:3000/`) +}); +