Skip to content

Commit f2d8ee9

Browse files
committed
Merge branch 'release/v1.0.0'
2 parents 28565aa + 8cc7f57 commit f2d8ee9

File tree

4 files changed

+88
-29
lines changed

4 files changed

+88
-29
lines changed

.vscode/tasks.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"_runner": "terminal",
1212
"windows": {
1313
"command": "cmd",
14-
"args": ["/c", "chcp 65001 ;"]
14+
"args": ["/c", "chcp 65001 && "]
1515
},
1616
"linux": {
1717
"command": "sh",
@@ -70,8 +70,8 @@
7070
"args": [
7171
"1bdd",
7272
"${workspaceRoot}/features",
73-
"-fail-fast",
74-
"-out",
73+
"-fail-fast",
74+
"-out",
7575
"${workspaceRoot}/exec.log"
7676
],
7777
"echoCommand": true,
@@ -94,8 +94,8 @@
9494
"args": [
9595
"1bdd",
9696
"${file}",
97-
"-fail-fast",
98-
"-out",
97+
"-fail-fast",
98+
"-out",
9999
"${workspaceRoot}/exec.log"
100100
],
101101
"echoCommand": true,
@@ -120,8 +120,8 @@
120120
"args": [
121121
"1bdd",
122122
"${fileDirname}/../${fileBasenameNoExtension}.feature",
123-
"-fail-fast",
124-
"-out",
123+
"-fail-fast",
124+
"-out",
125125
"${workspaceRoot}/exec.log"
126126
],
127127
"echoCommand": true,
@@ -147,7 +147,7 @@
147147
"1bdd",
148148
"gen",
149149
"${file}",
150-
"-out",
150+
"-out",
151151
"${workspaceRoot}/exec.log"
152152
],
153153
"echoCommand": true,

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
Описание.Имя("fs")
3-
.Версия("0.5.0")
3+
.Версия("1.0.0")
44
.ВключитьФайл("Модули")
55
.ВключитьФайл("LICENSE")
66
.ВключитьФайл("README.md");

tests/Пути.os

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313
МассивТестов.Добавить("Тест_ОтносительныйПуть_НеСвязанныеПути");
1414
МассивТестов.Добавить("Тест_ОтносительныйПуть_РазныеСлешиВКорнеИПути");
1515
МассивТестов.Добавить("Тест_ОтносительныйПуть_ВернутьТочкуДляТекущегоКаталога");
16-
16+
МассивТестов.Добавить("Тест_ОтносительныйПуть_РазныеРегистры");
17+
18+
МассивТестов.Добавить("Тест_ПолныйПуть");
19+
1720
Возврат МассивТестов;
1821

1922
КонецФункции
@@ -68,4 +71,19 @@
6871

6972
ОтносительныйПуть = ФС.ОтносительныйПуть(Корень, Путь);
7073
Ожидаем.Что(ОтносительныйПуть).Равно(".");
71-
КонецПроцедуры
74+
КонецПроцедуры
75+
76+
Процедура Тест_ОтносительныйПуть_РазныеРегистры() Экспорт
77+
Путь = "c:\j\workspace\p-U4K64BCDKA@2\epf";
78+
Корень = "C:\j\WORKSPACE\p-U4K64BCDKA@2";
79+
80+
ОтносительныйПуть = ФС.ОтносительныйПуть(Корень, Путь);
81+
Ожидаем.Что(ОтносительныйПуть).Равно("epf");
82+
КонецПроцедуры
83+
84+
Процедура Тест_ПолныйПуть() Экспорт
85+
Путь = "C:\projects\SB\vanessa\.\\apache";
86+
87+
ПолныйПуть = ФС.ПолныйПуть(Путь);
88+
Ожидаем.Что(ПолныйПуть).Равно("C:\projects\SB\vanessa\apache");
89+
КонецПроцедуры

Модули/ФС.os

Lines changed: 59 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
// Булево - Истина, если файл/каталог существует
1717
//
1818
Функция Существует(Знач Путь) Экспорт
19-
19+
2020
Объект = Новый Файл(Путь);
21-
21+
2222
Возврат Объект.Существует();
23-
23+
2424
КонецФункции // Существует()
2525

2626
// Проверяет существование файла
@@ -32,11 +32,11 @@
3232
// Булево - Истина, если файл существует
3333
//
3434
Функция ФайлСуществует(Знач Путь) Экспорт
35-
35+
3636
Объект = Новый Файл(Путь);
37-
37+
3838
Возврат Объект.Существует() и Объект.ЭтоФайл();
39-
39+
4040
КонецФункции // ФайлСуществует()
4141

4242
// Проверяет существование каталога
@@ -48,11 +48,11 @@
4848
// Булево - Истина, если каталог существует
4949
//
5050
Функция КаталогСуществует(Знач Путь) Экспорт
51-
51+
5252
Объект = Новый Файл(Путь);
53-
53+
5454
Возврат Объект.Существует() и Объект.ЭтоКаталог();
55-
55+
5656
КонецФункции // КаталогСуществует()
5757

5858
// Гарантирует наличие пустого каталога с указанным именем
@@ -61,10 +61,10 @@
6161
// Путь - Строка - Путь к каталогу
6262
//
6363
Процедура ОбеспечитьПустойКаталог(Знач Путь) Экспорт
64-
64+
6565
ОбеспечитьКаталог(Путь);
6666
УдалитьФайлы(Путь, ПолучитьМаскуВсеФайлы());
67-
67+
6868
КонецПроцедуры // ОбеспечитьПустойКаталог()
6969

7070
// Гарантирует наличие каталога с указанным именем
@@ -73,14 +73,14 @@
7373
// Путь - Строка - Путь к каталогу
7474
//
7575
Процедура ОбеспечитьКаталог(Знач Путь) Экспорт
76-
76+
7777
Объект = Новый Файл(Путь);
7878
Если Не Объект.Существует() Тогда
7979
СоздатьКаталог(Путь);
8080
ИначеЕсли НЕ Объект.ЭтоКаталог() Тогда
8181
ВызватьИсключение "Не удается создать каталог " + Путь + ". По данному пути уже существует файл.";
8282
КонецЕсли;
83-
83+
8484
КонецПроцедуры // ОбеспечитьКаталог()
8585

8686
// Копирует все файлы из одного каталога в другой
@@ -115,18 +115,19 @@
115115
// Булево - Истина, если каталог пуст
116116
//
117117
Функция КаталогПустой(Знач Путь) Экспорт
118-
118+
119119
Если НЕ КаталогСуществует(Путь) Тогда
120120
ВызватьИсключение "Каталог <" + Путь + "> не существует";
121121
КонецЕсли;
122-
122+
123123
МассивФайлов = НайтиФайлы(Путь, ПолучитьМаскуВсеФайлы(), Ложь);
124124

125125
Возврат МассивФайлов.Количество() = 0;
126126

127127
КонецФункции // КаталогПустой(Знач Путь)
128128

129129
// Возвращает путь файла относительно корневого каталога
130+
// регистро-независимая замена, что важно для Windows в некоторых сценариях
130131
//
131132
// Параметры:
132133
// ПутьКорневогоКаталога - <Строка> - путь корневого каталога
@@ -139,13 +140,17 @@
139140
//
140141
Функция ОтносительныйПуть(Знач ПутьКорневогоКаталога, Знач ПутьВнутреннегоФайла, Знач РазделительПути = Неопределено) Экспорт
141142

142-
Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда
143+
Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда
143144
ВызватьИсключение "Не указан корневой путь в методе ФС.ОтносительныйПуть";
144145
КонецЕсли;
145-
146+
146147
ФайлКорень = Новый Файл(ПутьКорневогоКаталога);
147148
ФайлВнутреннийКаталог = Новый Файл(ПутьВнутреннегоФайла);
148-
Рез = СтрЗаменить(ФайлВнутреннийКаталог.ПолноеИмя, ФайлКорень.ПолноеИмя, "");
149+
150+
ИмяДляРегулярки = ПодготовитьШаблонКИспользованиюВРегулярке(ФайлКорень.ПолноеИмя);
151+
РегулярноеВыражение = Новый РегулярноеВыражение(СтрШаблон("(%1)(.*)", ИмяДляРегулярки));
152+
Рез = РегулярноеВыражение.Заменить(ФайлВнутреннийКаталог.ПолноеИмя, "$2");
153+
149154
Если Найти("\/", Лев(Рез, 1)) > 0 Тогда
150155
Рез = Сред(Рез, 2);
151156
КонецЕсли;
@@ -177,3 +182,39 @@
177182
Возврат Файл.ПолноеИмя;
178183
КонецФункции // ПолныйПуть(Знач ОтносительныйИлиПолныйПуть) Экспорт
179184

185+
186+
// Подготовить шаблон к использованию в регулярке путем экранирования служебных символов
187+
//
188+
// Параметры:
189+
// Шаблон - Строка - строка регулярного выражения без экранирования
190+
//
191+
// Возвращаемое значение:
192+
// Строка - подготовленный шаблон регулярного выражения с добавлением экранирования и заменой *
193+
//
194+
Функция ПодготовитьШаблонКИспользованиюВРегулярке(Знач Шаблон)
195+
196+
СпецСимволы = Новый Массив;
197+
СпецСимволы.Добавить("\");
198+
СпецСимволы.Добавить("^");
199+
СпецСимволы.Добавить("$");
200+
СпецСимволы.Добавить("(");
201+
СпецСимволы.Добавить(")");
202+
СпецСимволы.Добавить("<");
203+
СпецСимволы.Добавить("[");
204+
СпецСимволы.Добавить("]");
205+
СпецСимволы.Добавить("{");
206+
СпецСимволы.Добавить("}");
207+
СпецСимволы.Добавить("|");
208+
СпецСимволы.Добавить(">");
209+
СпецСимволы.Добавить(".");
210+
СпецСимволы.Добавить("+");
211+
СпецСимволы.Добавить("?");
212+
СпецСимволы.Добавить("*");
213+
214+
Для Каждого СпецСимвол Из СпецСимволы Цикл
215+
Шаблон = СтрЗаменить(Шаблон, СпецСимвол, "\" + СпецСимвол);
216+
КонецЦикла;
217+
218+
Возврат Шаблон;
219+
220+
КонецФункции

0 commit comments

Comments
 (0)