Skip to content

Commit fd10b45

Browse files
author
Balashov Nikita
committed
homework-19
1 parent 8457e25 commit fd10b45

File tree

4 files changed

+164
-0
lines changed

4 files changed

+164
-0
lines changed
54 KB
Loading
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Home work 19</title>
6+
</head>
7+
<body>
8+
<h1>Server test:</h1><img src="cat.jpg">
9+
<script src="src/main.js"></script>
10+
</body>
11+
</html>
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
/*
2+
Даны строки разделенные различным образом,
3+
верните строки разделенные / или _, в нижнем регистре
4+
solution("ActiveModel::Errors") => active_model/errors"
5+
solution("HelloHowAreYou") => "hello_how_are_you"
6+
solution("MyNAMEIsBOND-JamesBond") => my_name_is_bond_james_bond"
7+
solution("MAINCompany::BEST-MAINUser") => "main_company/best_main_user"
8+
*/
9+
10+
const isLowerCase = (letter) => {
11+
if(letter === undefined) {
12+
return false;
13+
}
14+
const compareLetter = letter.toLowerCase();
15+
return letter === compareLetter;
16+
}
17+
18+
const isUpperCase = (letter) => {
19+
if(letter === undefined) {
20+
return false;
21+
}
22+
const compareLetter = letter.toUpperCase();
23+
return letter === compareLetter;
24+
}
25+
26+
const solution = (str) => {
27+
const replacedColon = str.replace(/::/, '/');
28+
const replacedDash = replacedColon.replace(/-/, '_');
29+
30+
const spliteddStr = replacedDash.split('')
31+
let output = '';
32+
33+
spliteddStr.forEach((letter, index, arr) => {
34+
const nextLetter = arr[index + 1];
35+
const prevLetter = arr[index - 1];
36+
const isNotStr = /\W/;
37+
38+
if(isNotStr.test(letter)) {
39+
output += letter;
40+
return;
41+
}
42+
43+
if(letter === '_') {
44+
return;
45+
}
46+
47+
if(isLowerCase(letter)) {
48+
output += letter;
49+
return;
50+
}
51+
52+
if(prevLetter === '/' || letter === '/') {
53+
const changedLetter = letter.toLowerCase();
54+
output += changedLetter;
55+
return;
56+
}
57+
58+
if(isUpperCase(letter) && isLowerCase(prevLetter) && isUpperCase(nextLetter)) {
59+
const changedLetter = letter.toLowerCase();
60+
output += '_' + changedLetter;
61+
return;
62+
}
63+
64+
if(isUpperCase(letter) && index === 0) {
65+
const changedLetter = letter.toLowerCase();
66+
output += changedLetter;
67+
return;
68+
}
69+
70+
if(isUpperCase(letter) && isUpperCase(nextLetter)) {
71+
const changedLetter = letter.toLowerCase();
72+
output += changedLetter;
73+
return;
74+
}
75+
76+
if(isUpperCase(letter) && isLowerCase(nextLetter) && isUpperCase(prevLetter)) {
77+
const changedLetter = letter.toLowerCase();
78+
output += '_' + changedLetter;
79+
return;
80+
}
81+
82+
if(isUpperCase(letter) && isLowerCase(prevLetter)) {
83+
const changedLetter = '_' + letter.toLowerCase();
84+
output += changedLetter;
85+
return;
86+
}
87+
88+
});
89+
90+
return output;
91+
}
92+
93+
console.log(solution("MAINCompany::BEST-MAINUser"));
94+
console.log(solution("MyNAMEIsBOND-JamesBond"));
95+
console.log(solution("HelloHowAreYou"));
96+
console.log(solution("ActiveModel::Errors"));
97+
98+
/* TASK 0.5
99+
ГОТОВО: Добавить кота в ваш КОД в Node.js !!
100+
КОТА ОСТАВИТЬ
101+
Добавить проверку на существование файла
102+
*/
103+
104+
/* TASK 1
105+
По приложению phone-book;
106+
1. Для каждой страницы у вас должен быть класс с одноименным названием
107+
в отдельном файле
108+
2. Каждый класс должен содержать методы render() - который рендерит всю страницу
109+
3. Удалить jquery.js и bootstrap.js с проекта
110+
-> Закончить keypad с прошлого занятия, добавить функционал для удаления номера
111+
Сортировка таблицы!
112+
Визуализировать страницы Edit contact, User, Add User;
113+
TASK 2
114+
1. keypad - сделать чтобы номер можно было набрать с клавиатуры (!)
115+
2. Формат номера должен быть таким (099)-17-38-170
116+
*/
117+
118+
/*
119+
TASK 3
120+
edit-contact,
121+
- сделать данные редактируемыми (атрибут contentEditable) // input
122+
- изменять backgroundColor
123+
add-user при клике:
124+
index.html/contacts.html - в поле search при вводе буквы,
125+
добавить поиск по имени если имя включает хотя бы одну эту букву.
126+
после ввода каждого символа, фильтровать отображаемых пользователей.
127+
При удалении всех символов отобразить снова весь список
128+
*/
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
const http = require('http');
2+
const fs = require('fs');
3+
const port = 3000;
4+
5+
const requestHandler = (request, response) => {
6+
let path = request.url;
7+
8+
if(path == '/'){
9+
path = '/index.html';
10+
}
11+
12+
let index = fs.readFileSync(`.${path}`);
13+
14+
response.end(index);
15+
};
16+
17+
const server = http.createServer(requestHandler);
18+
19+
server.listen(port, (err) => {
20+
if (err) {
21+
return console.log('something bad happened', err)
22+
}
23+
console.log(`server is listening on ${port}`)
24+
});
25+

0 commit comments

Comments
 (0)