Skip to content

Commit c4fe266

Browse files
committed
Добавлена возможность указания аргументам не обязательности, без ручной корректировки строки использования
1 parent 903ba3f commit c4fe266

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

src/core/Классы/cmd/КомандаПриложения.os

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,11 @@
587587
КонецЕсли;
588588
Лог.Отладка("Количество аргументы строки: %1", Аргументы.Количество());
589589
Для каждого арг Из Аргументы Цикл
590+
Если НЕ арг.Ключ.ПолучитьОбязательностьВвода() Тогда
591+
Спек = Спек + "["+ арг.Ключ.Имя +"]"+ " ";
592+
Продолжить;
593+
КонецЕсли;
594+
590595
Лог.Отладка("Добавляю аргумет <%1> в спек <%2>",арг.Ключ.Имя ,Спек);
591596
Спек = Спек + арг.Ключ.Имя + " ";
592597
КонецЦикла;

src/core/Классы/cmd/ПараметрКоманды.os

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@
1010
Перем УстановленаПользователем Экспорт; // булево
1111
Перем Значение Экспорт; //Значение по умолчанию
1212

13-
1413
Перем ТипОпции Экспорт;
1514
Перем ТипЭлементаОпции;
1615
Перем ПеременнаяВыгрузки;
1716
Перем ПеременнаяВыгрузкиУстановлена;
1817

1918
Перем ТребоватьУстановкиПользователем Экспорт;
2019

20+
Перем НеОбязательныйПараметр;
21+
2122
Перем НаименованияПараметров Экспорт;
2223

2324
Перем ТипПараметра; // Опция и аргумент
@@ -52,7 +53,13 @@
5253
УстановленаИзПеременнойОкружения = Ложь;
5354

5455
ПеременнаяВыгрузкиУстановлена = Ложь;
56+
57+
НеОбязательныйПараметр = Истина;
5558

59+
Если ВходящийТипПараметра = "аргумент" Тогда
60+
НеОбязательныйПараметр = Ложь;
61+
КонецЕсли;
62+
5663
ТипПараметра = ВходящийТипПараметра;
5764

5865
ПодготовитьНаименованияПараметров();
@@ -248,10 +255,16 @@
248255

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

251-
Функция Обязательный() Экспорт
258+
Функция ПолучитьОбязательностьВвода() Экспорт
252259

253-
ТребоватьУстановкиПользователем = Истина;
260+
Возврат НЕ НеОбязательныйПараметр;
261+
262+
КонецФункции
254263

264+
Функция Обязательный(Знач Признак = Истина) Экспорт
265+
266+
ТребоватьУстановкиПользователем = Признак;
267+
НеОбязательныйПараметр = Не Признак;
255268
Возврат ЭтотОбъект;
256269

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

tests/ВсеОпцииПарсера_test.os

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
НаименованияОпции = Новый Массив;
3434
НаименованияОпции.Добавить("-f");
35+
НаименованияОпции.Добавить("-F");
3536
НаименованияОпции.Добавить("--force");
3637
НаименованияОпции.Добавить("-o");
3738
НаименованияОпции.Добавить("--other");
@@ -40,7 +41,7 @@
4041
МассивОпций.Добавить(Опция("o other", "").ТСтрока());
4142
МассивОпций.Добавить(Опция("o other", "").ТДата());
4243
МассивОпций.Добавить(Опция("o other", "").ТЧисло());
43-
ОпцияForce = Опция("f force", Ложь).Флаг();
44+
ОпцияForce = Опция("f F force", Ложь).Флаг();
4445

4546
ТестовыеСлучаи = Новый Массив;
4647

@@ -61,6 +62,9 @@
6162
ТестовыеСлучаи.Добавить(ТестовыйСлучай("-fo x y", "y", "истина x"));
6263
ТестовыеСлучаи.Добавить(ТестовыйСлучай("-foxxx y", "y", "истина xxx"));
6364

65+
ТестовыеСлучаи.Добавить(ТестовыйСлучай("-Foxxx y", "y", "истина xxx"));
66+
67+
6468
Для каждого Тест Из ТестовыеСлучаи Цикл
6569

6670

@@ -71,6 +75,7 @@
7175

7276
ИндексОпций = Новый Соответствие;
7377
ИндексОпций.Вставить("-f", ОпцияForce);
78+
ИндексОпций.Вставить("-F", ОпцияForce);
7479
ИндексОпций.Вставить("--force", ОпцияForce);
7580
ИндексОпций.Вставить("-o", ОпцияТеста);
7681
ИндексОпций.Вставить("--other", ОпцияТеста);

0 commit comments

Comments
 (0)