Skip to content

Commit

Permalink
Merge branch 'release/1.1.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Nov 27, 2020
2 parents f2d8ee9 + 73d0530 commit d963dc6
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 10 deletions.
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

Описание.Имя("fs")
.Версия("1.0.0")
.Версия("1.1.0")
.ВключитьФайл("Модули")
.ВключитьФайл("LICENSE")
.ВключитьФайл("README.md");
18 changes: 15 additions & 3 deletions tests/Пути.os
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#Использовать ".."

#Использовать asserts
#Использовать tempfiles

#Использовать ".."

Перем мМенеджерВременныхФайлов;
Перем мМенеджерВременныхФайлов; // менеджер для управления временными файлами

Функция ПолучитьСписокТестов(Знач ЮнитТестирование) Экспорт

Expand All @@ -16,6 +16,8 @@
МассивТестов.Добавить("Тест_ОтносительныйПуть_РазныеРегистры");

МассивТестов.Добавить("Тест_ПолныйПуть");

МассивТестов.Добавить("Тест_ОбъединитьПутиПравильно");

Возврат МассивТестов;

Expand Down Expand Up @@ -87,3 +89,13 @@
ПолныйПуть = ФС.ПолныйПуть(Путь);
Ожидаем.Что(ПолныйПуть).Равно("C:\projects\SB\vanessa\apache");
КонецПроцедуры

Процедура Тест_ОбъединитьПутиПравильно() Экспорт

ПолныйПуть = ФС.ОбъединитьПути("E:\my\test", "\images", "upload/pic.png");

ПолныйПуть = СтрЗаменить(ПолныйПуть, ПолучитьРазделительПути(), "\");

Ожидаем.Что(ПолныйПуть).Равно("E:\my\test\images\upload\pic.png");

КонецПроцедуры
59 changes: 53 additions & 6 deletions Модули/ФС.os
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
//
/////////////////////////////////////////////////////////////////////


// Проверяет существование файла или каталога
//
// Параметры:
Expand Down Expand Up @@ -35,7 +34,7 @@

Объект = Новый Файл(Путь);

Возврат Объект.Существует() и Объект.ЭтоФайл();
Возврат Объект.Существует() И Объект.ЭтоФайл();

КонецФункции // ФайлСуществует()

Expand All @@ -51,7 +50,7 @@

Объект = Новый Файл(Путь);

Возврат Объект.Существует() и Объект.ЭтоКаталог();
Возврат Объект.Существует() И Объект.ЭтоКаталог();

КонецФункции // КаталогСуществует()

Expand Down Expand Up @@ -138,7 +137,8 @@
// Возвращаемое значение:
// <Строка> - относительный путь файла
//
Функция ОтносительныйПуть(Знач ПутьКорневогоКаталога, Знач ПутьВнутреннегоФайла, Знач РазделительПути = Неопределено) Экспорт
Функция ОтносительныйПуть(Знач ПутьКорневогоКаталога, Знач ПутьВнутреннегоФайла,
Знач РазделительПути = Неопределено) Экспорт

Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда
ВызватьИсключение "Не указан корневой путь в методе ФС.ОтносительныйПуть";
Expand All @@ -155,7 +155,7 @@
Рез = Сред(Рез, 2);
КонецЕсли;
Если Найти("\/", Прав(Рез, 1)) > 0 Тогда
Рез = Лев(Рез, СтрДлина(Рез)-1);
Рез = Лев(Рез, СтрДлина(Рез) - 1);
КонецЕсли;
Если РазделительПути <> Неопределено Тогда
Рез = СтрЗаменить(Рез, "\", РазделительПути);
Expand All @@ -182,7 +182,6 @@
Возврат Файл.ПолноеИмя;
КонецФункции // ПолныйПуть(Знач ОтносительныйИлиПолныйПуть) Экспорт


// Подготовить шаблон к использованию в регулярке путем экранирования служебных символов
//
// Параметры:
Expand Down Expand Up @@ -218,3 +217,51 @@
Возврат Шаблон;

КонецФункции

// Дополнение к методу ОбъединитьПути
// - разделители пути приводятся к единому разделителю, которые актуален для текущей системы
// - если в одном из путей встречается корневой слеш, то исключается получения корневого пути от диска,
// чем страдает метод движка ОбъединитьПути
// ОбъединитьПути("E:\my\test", "\images", "upload\pic.png") выведет неожиданное \images\upload\pic.png
// а ОбъединитьПутиПравильно выведет ожидаемое E:\my\test\images\upload\pic.png
//
// Параметры:
// Путь1 - Строка - часть пути.
// Путь2 - Строка - часть пути.
// Путь3 - Строка - часть пути. Необязательно.
// Путь4 - Строка - часть пути. Необязательно.
//
// Возвращаемое значение:
// Строка - финальный путь с разделителями, которые актуальны для текущей системы
//
Функция ОбъединитьПути(Знач Путь1, Знач Путь2, Знач Путь3 = "", Знач Путь4 = "") Экспорт

ВсеПути = Новый Массив;
ВсеПути.Добавить(Путь1);
ВсеПути.Добавить(Путь2);

Если Не ПустаяСтрока(Путь3) Тогда
ВсеПути.Добавить(Путь3);
КонецЕсли;

Если Не ПустаяСтрока(Путь4) Тогда
ВсеПути.Добавить(Путь4);
КонецЕсли;

Компоненты = Новый Массив;
Для каждого Путь Из ВсеПути Цикл

// К единому виду разделителей.
ВремПуть = СтрЗаменить(Путь, "\", "/");
ВремКомпоненты = СтрРазделить(ВремПуть, "/", Ложь);
Для каждого Компонент Из ВремКомпоненты Цикл
Компоненты.Добавить(Компонент);
КонецЦикла;

КонецЦикла;

РезультирующийПуть = СтрСоединить(Компоненты, ПолучитьРазделительПути());

Возврат РезультирующийПуть;

КонецФункции

0 comments on commit d963dc6

Please sign in to comment.