-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
128 lines (108 loc) · 4.38 KB
/
Copy pathmain.js
File metadata and controls
128 lines (108 loc) · 4.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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 при вводе буквы,
добавить поиск по имени если имя включает хотя бы одну эту букву.
после ввода каждого символа, фильтровать отображаемых пользователей.
При удалении всех символов отобразить снова весь список
*/