From 300c998b61f923482bd62ff53e9210d73bb61461 Mon Sep 17 00:00:00 2001
From: Anton Myagkov
Date: Tue, 4 Dec 2018 20:10:03 +0300
Subject: [PATCH 1/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?=
=?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA?=
=?UTF-8?q?=D0=B0=20=D0=BE=D0=B1=D1=8F=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D1=8C?=
=?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82?=
=?UTF-8?q?=D1=80=D0=BE=D0=B2=20=D0=B8=20=D0=B8=D1=85=20=D0=BF=D1=80=D0=BE?=
=?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7?=
=?UTF-8?q?=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20`=D0=9E=D0=B1=D1=8F=D0=B7?=
=?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=D0=9F=D0=B0?=
=?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D1=8B=D0=97=D0=B0=D0=BF?=
=?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D1=8B`=20=D0=9E=D0=B1=D0=BD?=
=?UTF-8?q?=D0=BE=D0=B2=D0=BB=D1=91=D0=BD=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB?=
=?UTF-8?q?=D1=8C=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?=
=?UTF-8?q?=D0=BD=D0=B8=D1=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Обновление тестов
---
src/cmdline.os | 172 +++++++++++++++++++++++++-------------
tests/cmdline-test.os | 186 +++++++++++++++++++++++++++---------------
2 files changed, 233 insertions(+), 125 deletions(-)
diff --git a/src/cmdline.os b/src/cmdline.os
index ab864ca..e8fd4dd 100644
--- a/src/cmdline.os
+++ b/src/cmdline.os
@@ -1,8 +1,11 @@
#Использовать logos
+#Область ПеременныхМодуля
+
Перем Лог;
Перем мПараметры;
Перем мПозиционныеПараметры;
+Перем мРезультатРазбора;
Перем мКоманды;
@@ -10,33 +13,37 @@
Перем мПозицияПозиционныхПараметров;
Перем мМассивВходныхПараметров;
+#КонецОбласти
+
+#Область ПрограммныйИнтерфейс
+
Функция ДобавитьПараметр(Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка("ДобавитьПараметр: ИмяПараметра <"+ИмяПараметра+">");
+ Лог.Отладка(СтрШаблон("ДобавитьПараметр: ИмяПараметра <%1>", ИмяПараметра));
- Возврат ДобавитьПараметрВТаблицу(мПозиционныеПараметры, ИмяПараметра, Пояснение, Ложь, Ложь);
+ Возврат ДобавитьПараметрВТаблицу(мПозиционныеПараметры, ИмяПараметра, Пояснение, Ложь, Ложь, Ложь);
КонецФункции
-Функция ДобавитьИменованныйПараметр(Знач ИмяПараметра, Знач Пояснение = "", Знач Глобальный = Ложь) Экспорт
+Функция ДобавитьИменованныйПараметр(Знач ИмяПараметра, Знач Пояснение = "", Знач Глобальный = Ложь, Обязательный = Ложь) Экспорт
- Лог.Отладка("ДобавитьИменованныйПараметр: ИмяПараметра <"+ИмяПараметра+">");
+ Лог.Отладка(СтрШаблон("ДобавитьИменованныйПараметр: ИмяПараметра <%1>", ИмяПараметра));
- Возврат ДобавитьПараметрВТаблицу(мПараметры, ИмяПараметра, Пояснение, Ложь, Глобальный);
+ Возврат ДобавитьПараметрВТаблицу(мПараметры, ИмяПараметра, Пояснение, Ложь, Глобальный, Обязательный);
КонецФункции
Функция ДобавитьПараметрФлаг(Знач ИмяПараметра, Знач Пояснение = "", Знач Глобальный = Ложь) Экспорт
- Лог.Отладка("ДобавитьПараметрФлаг: ИмяПараметра <"+ИмяПараметра+">");
+ Лог.Отладка(СтрШаблон("ДобавитьПараметрФлаг: ИмяПараметра <%1>", ИмяПараметра));
- Возврат ДобавитьПараметрВТаблицу(мПараметры, ИмяПараметра, Пояснение, Истина, Глобальный);
+ Возврат ДобавитьПараметрВТаблицу(мПараметры, ИмяПараметра, Пояснение, Истина, Глобальный, Ложь);
КонецФункции
Функция ДобавитьПараметрКоллекция(Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка("ДобавитьПараметрКоллекция: ИмяПараметра <"+ИмяПараметра+">");
+ Лог.Отладка(СтрШаблон("ДобавитьПараметрКоллекция: ИмяПараметра <%1>", ИмяПараметра));
Возврат ДобавитьПараметрКоллекцияВТаблицу(мПозиционныеПараметры, ИмяПараметра, Пояснение);
@@ -60,7 +67,7 @@
Если мКоманды.Получить(ИмяКоманды) <> Неопределено Тогда
ВызватьИсключение СтрШаблон("Команда <%1> уже добавлена ранее, повторное добавление является ошибкой!", ИмяКоманды);
КонецЕсли;
-
+
мКоманды.Вставить(ИмяКоманды, ОписаниеКоманды);
КонецПроцедуры
@@ -72,27 +79,27 @@
КонецФункции
Функция ДобавитьПозиционныйПараметрКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка("Добавляю позиционный параметр "+ИмяПараметра);
- Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ПозиционныеПараметры, ИмяПараметра, Пояснение, Ложь);
+ Лог.Отладка(СтрШаблон("Добавляю позиционный параметр %1",ИмяПараметра));
+ Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ПозиционныеПараметры, ИмяПараметра, Пояснение, Ложь, Ложь, Ложь);
КонецФункции
Функция ДобавитьИменованныйПараметрКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка("Добавляю именованный параметр "+ИмяПараметра);
- Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение, Ложь);
+ Лог.Отладка(СтрШаблон("Добавляю именованный параметр %1",ИмяПараметра));
+ Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение, Ложь, Ложь, Ложь);
КонецФункции
Функция ДобавитьПараметрФлагКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка("Добавляю параметр-флаг "+ИмяПараметра);
- Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение, Истина);
+ Лог.Отладка(СтрШаблон("Добавляю параметр-флаг %1", ИмяПараметра));
+ Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение, Истина, Ложь, Ложь);
КонецФункции
Функция ДобавитьПараметрКоллекцияКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка("Добавляю параметр-коллекция "+ИмяПараметра);
+ Лог.Отладка(СтрШаблон("Добавляю параметр-коллекция %1", ИмяПараметра));
Возврат ДобавитьПараметрКоллекцияВТаблицу(ОписаниеКоманды.ПозиционныеПараметры, ИмяПараметра, Пояснение);
КонецФункции
Функция ДобавитьИменованныйПараметрКоллекцияКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка("Добавляю параметр-коллекция "+ИмяПараметра);
+ Лог.Отладка(СтрШаблон("Добавляю параметр-коллекция %1",ИмяПараметра));
Возврат ДобавитьПараметрКоллекцияВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение);
КонецФункции
@@ -112,7 +119,7 @@
Для Каждого СтрГлобальныйПараметр Из ГлобальныеПараметры Цикл
СтрСуществующий = ОписаниеКоманды.ИменованныеПараметры.Найти(СтрГлобальныйПараметр.Имя,"Имя");
Если СтрСуществующий = Неопределено Тогда
- Лог.Отладка("Добавляю глобальный параметр: " + СтрГлобальныйПараметр.Имя);
+ Лог.Отладка(СтрШаблон("Добавляю глобальный параметр: %1",СтрГлобальныйПараметр.Имя));
ЗаполнитьЗначенияСвойств(ОписаниеКоманды.ИменованныеПараметры.Добавить(), СтрГлобальныйПараметр,, "ЭтоГлобальныйПараметр");
КонецЕсли;
КонецЦикла;
@@ -137,7 +144,7 @@
Функция Разобрать(Знач ВходнойМассивПараметров) Экспорт
Если Лог.Уровень() = УровниЛога.Отладка Тогда
- Лог.Отладка("ВходнойМассивПараметров <%1>", СтрокаПараметров(ВходнойМассивПараметров));
+ Лог.Отладка(СтрШаблон("ВходнойМассивПараметров <%1>", СтрокаПараметров(ВходнойМассивПараметров)));
КонецЕсли;
ОписаниеКоманды = Неопределено;
@@ -156,12 +163,12 @@
мПозицияПозиционныхПараметров = 0;
мПозицияВСпискеТокенов = 0;
- РезультатРазбора = РазобратьАргументы(мПараметры, мПозиционныеПараметры);
+ мРезультатРазбора = РазобратьАргументы(мПараметры, мПозиционныеПараметры);
Лог.Отладка("Трассировка РезультатКоманды.ЗначенияПараметров:");
- ВывестиРезультатРазбора(РезультатРазбора);
+ ВывестиРезультатРазбора(мРезультатРазбора);
- Возврат РезультатРазбора;
+ Возврат мРезультатРазбора;
КонецЕсли;
КонецФункции
@@ -172,7 +179,7 @@
Строка = Строка + Параметр + " ";
КонецЦикла;
Возврат Строка;
-КонецФункции // СтрокаПараметров()
+КонецФункции
Функция СправкаПоПараметрам() Экспорт
Возврат ТаблицаСправкаПоПараметрам(мПараметры, мПозиционныеПараметры, Ложь);
@@ -222,7 +229,7 @@
Процедура ВывестиСправкуПоКомандам() Экспорт
Сообщить("Возможные команды:");
-
+
ВозможныеКоманды = СправкаВозможныеКоманды();
МаксШирина = 0;
@@ -233,23 +240,23 @@
МаксШирина = ТекШирина;
КонецЕсли;
КонецЦикла;
-
+
Для Каждого Команда Из ВозможныеКоманды Цикл
- Сообщить(" " + Лев(Команда.Команда + Поле, МаксШирина + 2) + "- " + Команда.Пояснение);
+ Сообщить(СтрШаблон(" %1 - %2" , Лев(Команда.Команда + Поле, МаксШирина + 2), Команда.Пояснение));
КонецЦикла;
КонецПроцедуры
Процедура ВывестиСправкуПоКоманде(Знач ИмяКоманды) Экспорт
-
+
ВозможныеКоманды = СправкаВозможныеКоманды();
ОписаниеКоманды = ВозможныеКоманды.Найти(ИмяКоманды, "Команда");
Если ОписаниеКоманды = Неопределено Тогда
- Сообщить("Команда отсуствует: " + ИмяКоманды);
+ Сообщить(СтрШаблон("Команда отсуствует: %1", ИмяКоманды));
Возврат;
КонецЕсли;
-
- Сообщить("" + ОписаниеКоманды.Команда + " - " + ОписаниеКоманды.Пояснение);
+
+ Сообщить(СтрШаблон("%1 - %2", ОписаниеКоманды.Команда , ОписаниеКоманды.Пояснение));
Сообщить("Параметры:");
Для Каждого СтрПараметр Из ОписаниеКоманды.Параметры Цикл
Если Не СтрПараметр.ЭтоИменованныйПараметр Тогда
@@ -261,6 +268,45 @@
КонецПроцедуры
+// Проверяет наличие незаполненных обязательных параметров.
+// Обязательными могут быть только именованные параметры.
+// Обязательно именованного параметра определяется при добавлении
+//
+// Параметры:
+// Объект - Произвольный - записываемый объект ссылочного типа. Например, СправочникОбъект.
+// ВыводитьОшибки - Булево - Определяет выводить ли через Сообщить() ошибки в консоль,
+// при этом параллельно записывает отладочную информацию в лог.
+// Возвращаемое значение:
+// Булево - Если заполнены все параметры, то возвращает Истина, в противном случае Ложь
+//
+Функция ОбязательныеПараметрыЗаполнены(ВыводитьОшибки = Ложь) Экспорт
+
+ МассивНезаполненныхПараметров = мПараметры.НайтиСтроки(Новый Структура("Обязательный", Истина));
+
+ ВсеПараметрыЗаполнены = Истина;
+
+ Для Каждого Строка Из МассивНезаполненныхПараметров Цикл
+ Если мРезультатРазбора[Строка.Имя] = Неопределено Тогда
+
+ ВсеПараметрыЗаполнены = Ложь;
+
+ Если ВыводитьОшибки И Лог.Уровень() > 0 Тогда
+ Сообщить(СтрШаблон("Не заполнен обязательный параметр %1", Строка.Имя));
+ Иначе
+ Лог.Отладка(СтрШаблон("Не заполнен обязательный параметр %1", Строка.Имя));
+ КонецЕсли;
+ КонецЕсли;
+
+ КонецЦикла;
+
+ Возврат ВсеПараметрыЗаполнены;
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
Функция ТаблицаСправкаПоПараметрам(Знач ИменованныеПараметры, Знач ПозиционныеПараметры, Знач ДобавлятьГлобальныеПараметры)
ТабРезультат = НоваяТаблицаПараметров();
@@ -277,7 +323,7 @@
ЗаполнитьЗначенияСвойств(СтрРезультат, Стр);
СтрРезультат.ЭтоИменованныйПараметр = Истина;
КонецЦикла;
-
+
Если ДобавлятьГлобальныеПараметры Тогда
ГлобальныеПараметры = мПараметры.НайтиСтроки(Новый Структура("ЭтоГлобальныйПараметр", Истина));
@@ -289,9 +335,9 @@
СтрРезультат.ЭтоИменованныйПараметр = Истина;
КонецЕсли;
КонецЦикла;
-
+
КонецЕсли;
-
+
Для Каждого Стр Из ПозиционныеПараметры.НайтиСтроки(Новый Структура("ЭтоКоллекция", Истина)) Цикл
СтрРезультат = ТабРезультат.Добавить();
ЗаполнитьЗначенияСвойств(СтрРезультат, Стр);
@@ -304,8 +350,8 @@
Процедура РазобратьИменованныйПараметр(Знач Токен, Значение, Знач ИменованныеПараметры, Знач РезультатРазбора)
Перем ЗначениеТокена;
-
- Лог.Отладка("Это именованный параметр: " + Токен + " ?");
+
+ Лог.Отладка(СтрШаблон("Это именованный параметр: %1?", Токен));
СтрПараметр = ИменованныеПараметры.Найти(Токен, "Имя");
//TODO: для параметров вида --param=value значение получаем сразу и передаем в процедуру,
// а в случаи пустого получаем следующий параметр.
@@ -321,8 +367,8 @@
Иначе
РезультатРазбора[Токен] = ЗначениеТокена;
КонецЕсли;
- Лог.Отладка("Нашли значение именованного параметра: " + РезультатРазбора[Токен]);
-
+ Лог.Отладка(СтрШаблон("Нашли значение именованного параметра: %1", РезультатРазбора[Токен]));
+
КонецПроцедуры
Функция РазобратьАргументы(Знач ИменованныеПараметры, Знач ПозиционныеПараметры)
@@ -331,20 +377,25 @@
РезультатРазбора = Новый Соответствие;
Для Каждого СтрПараметр Из ИменованныеПараметры.НайтиСтроки(Новый Структура("ЭтоФлаг",Истина)) Цикл
- Лог.Отладка("Сбрасываю параметр-флаг: " + СтрПараметр.Имя);
+ Лог.Отладка(СтрШаблон("Сбрасываю параметр-флаг: %1", СтрПараметр.Имя));
РезультатРазбора[СтрПараметр.Имя] = Ложь;
КонецЦикла;
-
+
+ Для Каждого СтрПараметр Из ИменованныеПараметры.НайтиСтроки(Новый Структура("Обязательный",Истина)) Цикл
+ Лог.Отладка(СтрШаблон("Создаю обязательный параметры: %1", СтрПараметр.Имя));
+ РезультатРазбора[СтрПараметр.Имя] = Неопределено;
+ КонецЦикла;
+
Если мМассивВходныхПараметров.Количество() = 0 Тогда
Лог.Отладка("Параметров не передали.");
Возврат РезультатРазбора;
КонецЕсли;
-
+
ТекущийПараметрКоллекция = Неопределено;
Пока Истина Цикл
Токен = СледующийТокен();
- Лог.Отладка("Выбран токен: " + Токен);
+ Лог.Отладка(СтрШаблон("Выбран токен: %1", Токен));
Если Токен = Неопределено Тогда
Лог.Отладка("Закончились токены");
@@ -362,9 +413,9 @@
Если ЭтоИменованныйПараметр(Токен, ИменованныеПараметры) Тогда
РазобратьИменованныйПараметр(Токен, Неопределено, ИменованныеПараметры, РезультатРазбора);
ИначеЕсли ЭтоПараметрФлаг(Токен, ИменованныеПараметры) Тогда
- Лог.Отладка("Это параметр-флаг: " + Токен + " ?");
+ Лог.Отладка(СтрШаблон("Это параметр-флаг: %1?",Токен));
РезультатРазбора[Токен] = Истина;
- Лог.Отладка("Нашли параметр-флаг: " + РезультатРазбора[Токен]);
+ Лог.Отладка(СтрШаблон("Нашли параметр-флаг: %1", РезультатРазбора[Токен]));
ИначеЕсли СтрНайти(Токен, "=") > 0 И Лев(Токен, 2) = "--" Тогда
Индекс = СтрНайти(Токен, "=");
КлючТокена = Лев(Токен, Индекс-1);
@@ -372,17 +423,17 @@
Если ЭтоИменованныйПараметр(СокрЛП(КлючТокена), ИменованныеПараметры) Тогда
РазобратьИменованныйПараметр(КлючТокена, ЗначениеТокена, ИменованныеПараметры, РезультатРазбора);
Иначе
- ВызватьИсключение "Ожидается именованный параметр " + КлючТокена;
+ ВызватьИсключение СтрШаблон("Ожидается именованный параметр %1", КлючТокена);
КонецЕсли;
Иначе
ОписаниеПараметра = СледующийПозиционныйПараметр(ПозиционныеПараметры);
Если ОписаниеПараметра.ЭтоКоллекция Тогда
- Лог.Отладка("Перехожу к чтению параметра-коллекции <"+ОписаниеПараметра.Имя+">");
+ Лог.Отладка(СтрШаблон("Перехожу к чтению параметра-коллекции <%1>",ОписаниеПараметра.Имя));
ТекущийПараметрКоллекция = Новый Массив;
РезультатРазбора[ОписаниеПараметра.Имя] = ТекущийПараметрКоллекция;
ТекущийПараметрКоллекция.Добавить(Токен);
Иначе
- Лог.Отладка("Установлено значение позиционного параметра <" + ОписаниеПараметра.Имя + " = " + Токен + ">");
+ Лог.Отладка(СтрШаблон("Установлено значение позиционного параметра <%1=%2>", ОписаниеПараметра.Имя, Токен));
РезультатРазбора[ОписаниеПараметра.Имя] = Токен;
КонецЕсли;
КонецЕсли;
@@ -415,19 +466,19 @@
Функция СледующийОбязательныйТокен(Знач ИскомыйПараметр)
Токен = СледующийТокен();
Если Токен = Неопределено Тогда
- ВызватьИсключение "Ожидается значение параметра " + ИскомыйПараметр;
+ ВызватьИсключение СтрШаблон("Ожидается значение параметра %1", ИскомыйПараметр);
КонецЕсли;
Возврат Токен;
КонецФункции
Функция ЭтоИменованныйПараметр(Знач Токен, Знач ИменованныеПараметры)
- Лог.Отладка("Ищу именованный параметр "+Токен);
+ Лог.Отладка(СтрШаблон("Ищу именованный параметр %1", Токен));
СтрПараметр = ИменованныеПараметры.Найти(Токен, "Имя");
Возврат СтрПараметр <> Неопределено и Не СтрПараметр.ЭтоФлаг;
КонецФункции
Функция ЭтоПараметрФлаг(Знач Токен, Знач ИменованныеПараметры)
- Лог.Отладка("Ищу параметр-флаг "+Токен);
+ Лог.Отладка(СтрШаблон("Ищу параметр-флаг %1", Токен));
СтрПараметр = ИменованныеПараметры.Найти(Токен, "Имя");
Возврат СтрПараметр <> Неопределено и СтрПараметр.ЭтоФлаг;
КонецФункции
@@ -462,30 +513,35 @@
Таблица.Колонки.Добавить("Пояснение");
Таблица.Колонки.Добавить("ЭтоГлобальныйПараметр");
Таблица.Колонки.Добавить("ЭтоКоллекция");
+ Таблица.Колонки.Добавить("Обязательный");
Возврат Таблица;
КонецФункции
-Функция ДобавитьПараметрВТаблицу(Знач Таблица, Знач Имя, Знач Пояснение, Знач Флаг, Знач Глобальный = Ложь)
+Функция ДобавитьПараметрВТаблицу(Знач Таблица, Имя, Пояснение, Флаг, Глобальный, Обязательный)
+
СтрПараметр = Таблица.Добавить();
- СтрПараметр.Имя = Строка(Имя);
- СтрПараметр.ЭтоФлаг = Флаг;
+
+ СтрПараметр.Имя = Строка(Имя);
+ СтрПараметр.ЭтоФлаг = Флаг;
СтрПараметр.Пояснение = Пояснение;
СтрПараметр.ЭтоГлобальныйПараметр = Глобальный;
СтрПараметр.ЭтоКоллекция = Ложь;
-
- Возврат СтрПараметр;
+ СтрПараметр.Обязательный = Обязательный;
+ Возврат СтрПараметр;
КонецФункции
Функция ДобавитьПараметрКоллекцияВТаблицу(Знач Таблица, Знач Имя, Знач Пояснение)
-
- СтрПараметр = ДобавитьПараметрВТаблицу(Таблица, Имя, Пояснение, Ложь);
+
+ СтрПараметр = ДобавитьПараметрВТаблицу(Таблица, Имя, Пояснение, Ложь, Ложь, Ложь);
СтрПараметр.ЭтоКоллекция = Истина;
-
+
Возврат СтрПараметр;
-
+
КонецФункции
+#КонецОбласти
+
Инит();
diff --git a/tests/cmdline-test.os b/tests/cmdline-test.os
index 53f1614..4262a7a 100644
--- a/tests/cmdline-test.os
+++ b/tests/cmdline-test.os
@@ -39,6 +39,8 @@
СписокТестов.Добавить("ТестДолжен_ПрочитатьПараметрКоллекцияВКонце");
СписокТестов.Добавить("ТестДолжен_ПолучитьЗначениеПараметраЧерезРавно");
СписокТестов.Добавить("ТестДолжен_ПолучитьЗначениеПараметраЧерезРавноКомбинацияДругихПараметров");
+ СписокТестов.Добавить("ТестДолжен_УспешноПроверитьУстановкуУстановленногоОбязательногоПараметра");
+ СписокТестов.Добавить("ТестДолжен_ПодтвердитьНезаполненностьОбязательногоПараметра");
Возврат СписокТестов;
@@ -47,30 +49,29 @@
Процедура ПередЗапускомТеста() Экспорт
ПарсерКоманднойСтроки = Новый ПарсерАргументовКоманднойСтроки;
-
+
Лог = Логирование.ПолучитьЛог("oscript.lib.cmdline");
Лог.УстановитьУровень(УровниЛога.Информация);
КонецПроцедуры
Процедура ПослеЗапускаТеста() Экспорт
-
ПарсерКоманднойСтроки = Неопределено;
юТест.УдалитьВременныеФайлы();
Лог = Неопределено;
КонецПроцедуры
Процедура ТестДолжен_ПолучитьПараметрИЗначение() Экспорт
-
+
// строка запуска - oscript test.os Параметр Значение или oscript test.os "Параметр" "Значение"
ВходнойМассивПараметров = Новый Массив;
ВходнойМассивПараметров.Добавить("Параметр");
ВходнойМассивПараметров.Добавить("Значение");
ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр("Параметр");
-
+
Коллекция = ПарсерКоманднойСтроки.Разобрать(ВходнойМассивПараметров);
-
+
Утверждения.ПроверитьРавенство(1, Коллекция.Количество());
Утверждения.ПроверитьРавенство("Значение", Коллекция.Получить("Параметр"));
Утверждения.ПроверитьРавенство("Значение", Коллекция["Параметр"]);
@@ -78,31 +79,31 @@
КонецПроцедуры
Процедура ТестДолжен_ПроверитьМетод_ДобавитьПараметрФлаг() Экспорт
-
+
// строка запуска - oscript test.os Параметр или oscript test.os "Параметр"
ВходнойМассивПараметров = Новый Массив;
ВходнойМассивПараметров.Добавить("Параметр");
ПарсерКоманднойСтроки.ДобавитьПараметрФлаг("Параметр");
-
+
Коллекция = ПарсерКоманднойСтроки.Разобрать(ВходнойМассивПараметров);
-
+
Утверждения.ПроверитьРавенство(1, Коллекция.Количество());
Утверждения.ПроверитьРавенство(Истина, Коллекция.Получить("Параметр"), "Параметр");
КонецПроцедуры
Процедура ТестДолжен_ПроверитьМетод_ДобавитьПараметрФлаг_КогдаПараметрФлагНеЗадан() Экспорт
-
+
ВходнойМассивПараметров = Новый Массив;
ВходнойМассивПараметров.Добавить("ДругойПараметр");
ВходнойМассивПараметров.Добавить("Значение");
ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр("ДругойПараметр");
ПарсерКоманднойСтроки.ДобавитьПараметрФлаг("Параметр");
-
+
Коллекция = ПарсерКоманднойСтроки.Разобрать(ВходнойМассивПараметров);
-
+
Утверждения.ПроверитьРавенство(2, Коллекция.Количество(), "Коллекция.Количество()");
Утверждения.ПроверитьРавенство(Ложь, Коллекция.Получить("Параметр"), "Параметр");
@@ -118,7 +119,7 @@
Аргументы = ПарсерКоманднойСтроки.Разобрать(ВходнойМассив);
Флаг = Аргументы["flag"];
-
+
Ожидаем.Что(Флаг, "Значение Флаг").Равно(Ложь);
КонецПроцедуры
@@ -129,13 +130,13 @@
ПарсерКоманднойСтроки.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "flag");
ПарсерКоманднойСтроки.ДобавитьКоманду(ОписаниеКоманды);
-
+
ВходнойМассив = Новый Массив;
ВходнойМассив.Добавить("test");
Аргументы = ПарсерКоманднойСтроки.РазобратьКоманду(ВходнойМассив);
Флаг = Аргументы.ЗначенияПараметров["flag"];
-
+
Ожидаем.Что(Флаг, "Значение Флаг").Равно(Ложь);
КонецПроцедуры
@@ -150,12 +151,11 @@
Для Каждого КлючЗначение Из НаборПараметров Цикл
ВходнойМассивПараметров.Добавить(КлючЗначение.Ключ);
ВходнойМассивПараметров.Добавить(КлючЗначение.Значение);
-
ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр(КлючЗначение.Ключ);
КонецЦикла;
Коллекция = ПарсерКоманднойСтроки.Разобрать(ВходнойМассивПараметров);
-
+
Утверждения.ПроверитьРавенство(НаборПараметров.Количество(), Коллекция.Количество());
Для Каждого КлючЗначение Из НаборПараметров Цикл
Утверждения.ПроверитьРавенство(КлючЗначение.Значение, Коллекция.Получить(КлючЗначение.Ключ));
@@ -187,7 +187,7 @@
Утверждения.ПроверитьНеравенство(Неопределено, Результат, "Команда должна быть разобрана правильно");
Утверждения.ПроверитьРавенство("test", Результат.Команда, "Команда");
Утверждения.ПроверитьРавенство("testpath-value", Результат.ЗначенияПараметров["testpath"], "Значение позиционного параметра");
-
+
Утверждения.ПроверитьРавенство("1", Результат.ЗначенияПараметров["mode"], "Именованный ключ mode");
Утверждения.ПроверитьРавенство("2", Результат.ЗначенияПараметров["output"], "Именованный ключ output");
Утверждения.ПроверитьРавенство(Истина, Результат.ЗначенияПараметров["flag"], "Флаг flag");
@@ -204,7 +204,7 @@
ПарсерКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "mode");
ПарсерКоманднойСтроки.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "verbose");
-
+
ПарсерКоманднойСтроки.ДобавитьКоманду(ОписаниеКоманды);
ВходнойМассивПараметров = Новый Массив;
@@ -221,11 +221,11 @@
Утверждения.ПроверитьРавенство("add", Результат.Команда, "Команда");
Утверждения.ПроверитьРавенство("testpath-value", Результат.ЗначенияПараметров["testpath"], "Значение позиционного параметра команды");
Утверждения.ПроверитьРавенство("dest-value", Результат.ЗначенияПараметров["dest"], "Значение позиционного параметра команды");
-
+
Утверждения.ПроверитьРавенство("on", Результат.ЗначенияПараметров["mode"], "Именованный ключ mode");
Утверждения.ПроверитьРавенство("2", Результат.ЗначенияПараметров["verbose"], "Именованный ключ verbose");
Утверждения.ПроверитьРавенство(4, Результат.ЗначенияПараметров.Количество());
-
+
КонецПроцедуры
Процедура ТестДолжен_ПолучитьПараметрыКомандыИменованныйИлиПозиционныйПоВыбору() Экспорт
@@ -281,7 +281,7 @@
Утверждения.ПроверитьНеравенство(Неопределено, Результат, "Команда должна быть разобрана правильно");
Утверждения.ПроверитьРавенство("test", Результат.Команда, "Команда");
Утверждения.ПроверитьРавенство("testpath-value", Результат.ЗначенияПараметров["testpath"], "Значение позиционного параметра");
-
+
Утверждения.ПроверитьРавенство("1", Результат.ЗначенияПараметров["mode"], "Именованный ключ mode");
Утверждения.ПроверитьРавенство("2", Результат.ЗначенияПараметров["output"], "Именованный ключ output");
Утверждения.ПроверитьРавенство(Истина, Результат.ЗначенияПараметров["flag"], "Флаг flag");
@@ -308,7 +308,7 @@
Утверждения.ПроверитьНеравенство(Неопределено, Результат, "Команда должна быть разобрана правильно");
Утверждения.ПроверитьРавенство("test", Результат.Команда, "Команда");
Утверждения.ПроверитьРавенство("path-value", Результат.ЗначенияПараметров["testpath"], "Значение позиционного параметра testpath");
-
+
Утверждения.ПроверитьРавенство(Истина, Результат.ЗначенияПараметров["flag"], "Глобальный параметр-флаг flag");
Утверждения.ПроверитьРавенство(2, Результат.ЗначенияПараметров.Количество());
@@ -318,7 +318,7 @@
ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр("Параметр", "Это первый тестовый параметр");
ПарсерКоманднойСтроки.ДобавитьПараметр("Параметр1", "Это второй тестовый параметр");
-
+
СтрокиСправки = ПарсерКоманднойСтроки.СправкаПоПараметрам();
// позиционные параметры идут в справке сначала
Утверждения.ПроверитьРавенство("Это второй тестовый параметр", СтрокиСправки[0].Пояснение);
@@ -379,7 +379,7 @@
Утверждения.ПроверитьРавенство("пояснение" , Справка[1].Параметры[0].Пояснение);
Утверждения.ПроверитьРавенство("описание общего" , Справка[1].Параметры[1].Пояснение);
- // ПарсерКоманднойСтроки.ВывестиСправкуПоКоманде("ком1");
+ ПарсерКоманднойСтроки.ВывестиСправкуПоКоманде("ком1");
КонецПроцедуры
Процедура ТестДолжен_ОбработатьНеизвестныйТокен() Экспорт
@@ -462,7 +462,6 @@
Утверждения.ПроверитьРавенство("2", Значения["-item"][1]);
Утверждения.ПроверитьРавенство("3", Значения["-item"][2]);
-
КонецПроцедуры
Процедура ТестДолжен_ПрочитатьПараметрКоллекцияВКонце() Экспорт
@@ -487,57 +486,110 @@
Утверждения.ПроверитьРавенство("2", Значения["list"][1]);
Утверждения.ПроверитьРавенство("3", Значения["list"][2]);
-
КонецПроцедуры
Процедура ТестДолжен_ПолучитьЗначениеПараметраЧерезРавно() Экспорт
- НаборПараметров = Новый Соответствие;
- НаборПараметров.Вставить("--Команда", "Значение11");
-
- ВходнойМассивПараметров = Новый Массив;
- Для Каждого КлючЗначение Из НаборПараметров Цикл
- ВходнойМассивПараметров.Добавить(КлючЗначение.Ключ+"="+КлючЗначение.Значение);
-
- ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр(КлючЗначение.Ключ);
- КонецЦикла;
-
- Коллекция = ПарсерКоманднойСтроки.Разобрать(ВходнойМассивПараметров);
+ НаборПараметров = Новый Соответствие;
+ НаборПараметров.Вставить("--Команда", "Значение11");
- Утверждения.ПроверитьРавенство(НаборПараметров.Количество(), Коллекция.Количество());
- Для Каждого КлючЗначение Из НаборПараметров Цикл
- Утверждения.ПроверитьРавенство(КлючЗначение.Значение, Коллекция.Получить(КлючЗначение.Ключ));
- Утверждения.ПроверитьРавенство(КлючЗначение.Значение, Коллекция[КлючЗначение.Ключ]);
- КонецЦикла;
+ ВходнойМассивПараметров = Новый Массив;
+ Для Каждого КлючЗначение Из НаборПараметров Цикл
+ ВходнойМассивПараметров.Добавить(КлючЗначение.Ключ+"="+КлючЗначение.Значение);
+ ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр(КлючЗначение.Ключ);
+ КонецЦикла;
+
+ Коллекция = ПарсерКоманднойСтроки.Разобрать(ВходнойМассивПараметров);
+
+ Утверждения.ПроверитьРавенство(НаборПараметров.Количество(), Коллекция.Количество());
+ Для Каждого КлючЗначение Из НаборПараметров Цикл
+ Утверждения.ПроверитьРавенство(КлючЗначение.Значение, Коллекция.Получить(КлючЗначение.Ключ));
+ Утверждения.ПроверитьРавенство(КлючЗначение.Значение, Коллекция[КлючЗначение.Ключ]);
+ КонецЦикла;
+
КонецПроцедуры
Процедура ТестДолжен_ПолучитьЗначениеПараметраЧерезРавноКомбинацияДругихПараметров() Экспорт
- НаборПараметров = Новый Соответствие;
- НаборПараметров.Вставить("--Команда", "Значение11");
- НаборПараметров.Вставить("Команда1", "--Значение11=вввв");
- НаборПараметров.Вставить("Команда2", "Значение11");
- НаборПараметров.Вставить("--Команда3", "Значение11=Значение3");
- НаборПараметров.Вставить("--Команда4", "");
-
- ВходнойМассивПараметров = Новый Массив;
- Для Каждого КлючЗначение Из НаборПараметров Цикл
- Если Лев(КлючЗначение.Ключ, 2) = "--" Тогда
- ВходнойМассивПараметров.Добавить(КлючЗначение.Ключ+"="+КлючЗначение.Значение);
- Иначе
- ВходнойМассивПараметров.Добавить(КлючЗначение.Ключ);
- ВходнойМассивПараметров.Добавить(КлючЗначение.Значение);
- КонецЕсли;
- ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр(КлючЗначение.Ключ);
- КонецЦикла;
-
- Коллекция = ПарсерКоманднойСтроки.Разобрать(ВходнойМассивПараметров);
+ НаборПараметров = Новый Соответствие;
+ НаборПараметров.Вставить("--Команда", "Значение11");
+ НаборПараметров.Вставить("Команда1", "--Значение11=вввв");
+ НаборПараметров.Вставить("Команда2", "Значение11");
+ НаборПараметров.Вставить("--Команда3", "Значение11=Значение3");
+ НаборПараметров.Вставить("--Команда4", "");
+
+ ВходнойМассивПараметров = Новый Массив;
+ Для Каждого КлючЗначение Из НаборПараметров Цикл
+ Если Лев(КлючЗначение.Ключ, 2) = "--" Тогда
+ ВходнойМассивПараметров.Добавить(КлючЗначение.Ключ+"="+КлючЗначение.Значение);
+ Иначе
+ ВходнойМассивПараметров.Добавить(КлючЗначение.Ключ);
+ ВходнойМассивПараметров.Добавить(КлючЗначение.Значение);
+ КонецЕсли;
+ ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр(КлючЗначение.Ключ);
+ КонецЦикла;
+
+ Коллекция = ПарсерКоманднойСтроки.Разобрать(ВходнойМассивПараметров);
+
+ Утверждения.ПроверитьРавенство(НаборПараметров.Количество(), Коллекция.Количество());
+ Для Каждого КлючЗначение Из НаборПараметров Цикл
+ Утверждения.ПроверитьРавенство(КлючЗначение.Значение, Коллекция.Получить(КлючЗначение.Ключ));
+ Утверждения.ПроверитьРавенство(КлючЗначение.Значение, Коллекция[КлючЗначение.Ключ]);
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура ТестДолжен_УспешноПроверитьУстановкуУстановленногоОбязательногоПараметра() Экспорт
+
+ ВходнойМассивПараметров = Новый Массив;
+ ВходнойМассивПараметров.Добавить("СтранныйКварк");
+ ВходнойМассивПараметров.Добавить("111");
+ ВходнойМассивПараметров.Добавить("ОчарованныйКварк");
+ ВходнойМассивПараметров.Добавить("222");
+
+ ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр(
+ "СтранныйКварк",
+ НСтр("ru='Описание обязательного параметра'"),
+ ,
+ Ложь);
+
+ ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр(
+ "ОчарованныйКварк",
+ НСтр("ru='Описание обязательного параметра'"),
+ ,
+ Истина);
+
+ Коллекция = ПарсерКоманднойСтроки.Разобрать(ВходнойМассивПараметров);
+
+ Утверждения.ПроверитьРавенство(Истина, ПарсерКоманднойСтроки.ОбязательныеПараметрыЗаполнены());
+ Утверждения.ПроверитьРавенство(Истина, ПарсерКоманднойСтроки.ОбязательныеПараметрыЗаполнены(Истина));
+ Утверждения.ПроверитьРавенство(Истина, ПарсерКоманднойСтроки.ОбязательныеПараметрыЗаполнены(Ложь));
- Утверждения.ПроверитьРавенство(НаборПараметров.Количество(), Коллекция.Количество());
- Для Каждого КлючЗначение Из НаборПараметров Цикл
- Утверждения.ПроверитьРавенство(КлючЗначение.Значение, Коллекция.Получить(КлючЗначение.Ключ));
- Утверждения.ПроверитьРавенство(КлючЗначение.Значение, Коллекция[КлючЗначение.Ключ]);
- КонецЦикла;
-
КонецПроцедуры
+
+Процедура ТестДолжен_ПодтвердитьНезаполненностьОбязательногоПараметра() Экспорт
+
+ ВходнойМассивПараметров = Новый Массив;
+ ВходнойМассивПараметров.Добавить("ПрелестныйКварк");
+ ВходнойМассивПараметров.Добавить("111");
+
+ ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр(
+ "ПрелестныйКварк",
+ НСтр("ru='Описание обязательного параметра'"),
+ ,
+ Ложь);
+
+ ПарсерКоманднойСтроки.ДобавитьИменованныйПараметр(
+ "ОчарованныйКварк",
+ НСтр("ru='Описание обязательного параметра'"),
+ ,
+ Истина);
+
+ Коллекция = ПарсерКоманднойСтроки.Разобрать(ВходнойМассивПараметров);
+
+ Утверждения.ПроверитьРавенство(Ложь, ПарсерКоманднойСтроки.ОбязательныеПараметрыЗаполнены());
+ Утверждения.ПроверитьРавенство(Ложь, ПарсерКоманднойСтроки.ОбязательныеПараметрыЗаполнены(Истина));
+ Утверждения.ПроверитьРавенство(Ложь, ПарсерКоманднойСтроки.ОбязательныеПараметрыЗаполнены(Ложь));
+
+КонецПроцедуры
\ No newline at end of file
From cb87cfcae7e6bf1c7f8df1c955055a321fdeb3b1 Mon Sep 17 00:00:00 2001
From: Anton Myagkov
Date: Wed, 5 Dec 2018 12:04:31 +0300
Subject: [PATCH 2/3] =?UTF-8?q?=D0=98=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?=
=?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=81=D1=82=D1=80?=
=?UTF-8?q?=D0=BE=D0=B5=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B2=20=D0=9B?=
=?UTF-8?q?=D0=BE=D0=B3.=D0=9E=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0=20?=
=?UTF-8?q?=D0=A1=D1=82=D1=80=D0=A8=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/cmdline.os | 50 +++++++++++++++++++++++++-------------------------
1 file changed, 25 insertions(+), 25 deletions(-)
diff --git a/src/cmdline.os b/src/cmdline.os
index e8fd4dd..f19839d 100644
--- a/src/cmdline.os
+++ b/src/cmdline.os
@@ -19,7 +19,7 @@
Функция ДобавитьПараметр(Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка(СтрШаблон("ДобавитьПараметр: ИмяПараметра <%1>", ИмяПараметра));
+ Лог.Отладка("ДобавитьПараметр: ИмяПараметра <%1>", ИмяПараметра);
Возврат ДобавитьПараметрВТаблицу(мПозиционныеПараметры, ИмяПараметра, Пояснение, Ложь, Ложь, Ложь);
@@ -27,7 +27,7 @@
Функция ДобавитьИменованныйПараметр(Знач ИмяПараметра, Знач Пояснение = "", Знач Глобальный = Ложь, Обязательный = Ложь) Экспорт
- Лог.Отладка(СтрШаблон("ДобавитьИменованныйПараметр: ИмяПараметра <%1>", ИмяПараметра));
+ Лог.Отладка("ДобавитьИменованныйПараметр: ИмяПараметра <%1>", ИмяПараметра);
Возврат ДобавитьПараметрВТаблицу(мПараметры, ИмяПараметра, Пояснение, Ложь, Глобальный, Обязательный);
@@ -35,7 +35,7 @@
Функция ДобавитьПараметрФлаг(Знач ИмяПараметра, Знач Пояснение = "", Знач Глобальный = Ложь) Экспорт
- Лог.Отладка(СтрШаблон("ДобавитьПараметрФлаг: ИмяПараметра <%1>", ИмяПараметра));
+ Лог.Отладка("ДобавитьПараметрФлаг: ИмяПараметра <%1>", ИмяПараметра);
Возврат ДобавитьПараметрВТаблицу(мПараметры, ИмяПараметра, Пояснение, Истина, Глобальный, Ложь);
@@ -43,7 +43,7 @@
Функция ДобавитьПараметрКоллекция(Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка(СтрШаблон("ДобавитьПараметрКоллекция: ИмяПараметра <%1>", ИмяПараметра));
+ Лог.Отладка("ДобавитьПараметрКоллекция: ИмяПараметра <%1>", ИмяПараметра);
Возврат ДобавитьПараметрКоллекцияВТаблицу(мПозиционныеПараметры, ИмяПараметра, Пояснение);
@@ -79,27 +79,27 @@
КонецФункции
Функция ДобавитьПозиционныйПараметрКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка(СтрШаблон("Добавляю позиционный параметр %1",ИмяПараметра));
+ Лог.Отладка("Добавляю позиционный параметр %1", ИмяПараметра);
Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ПозиционныеПараметры, ИмяПараметра, Пояснение, Ложь, Ложь, Ложь);
КонецФункции
Функция ДобавитьИменованныйПараметрКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка(СтрШаблон("Добавляю именованный параметр %1",ИмяПараметра));
+ Лог.Отладка("Добавляю именованный параметр %1", ИмяПараметра);
Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение, Ложь, Ложь, Ложь);
КонецФункции
Функция ДобавитьПараметрФлагКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка(СтрШаблон("Добавляю параметр-флаг %1", ИмяПараметра));
+ Лог.Отладка("Добавляю параметр-флаг %1", ИмяПараметра);
Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение, Истина, Ложь, Ложь);
КонецФункции
Функция ДобавитьПараметрКоллекцияКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка(СтрШаблон("Добавляю параметр-коллекция %1", ИмяПараметра));
+ Лог.Отладка("Добавляю параметр-коллекция %1", ИмяПараметра);
Возврат ДобавитьПараметрКоллекцияВТаблицу(ОписаниеКоманды.ПозиционныеПараметры, ИмяПараметра, Пояснение);
КонецФункции
Функция ДобавитьИменованныйПараметрКоллекцияКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт
- Лог.Отладка(СтрШаблон("Добавляю параметр-коллекция %1",ИмяПараметра));
+ Лог.Отладка("Добавляю параметр-коллекция %1", ИмяПараметра);
Возврат ДобавитьПараметрКоллекцияВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение);
КонецФункции
@@ -113,13 +113,13 @@
Если ОписаниеКоманды = Неопределено Тогда
ВызватьИсключение "Неизвестная команда: " + МассивПараметров[0];
КонецЕсли;
- Лог.Отладка("Разбор команды: " + ОписаниеКоманды.Команда);
+ Лог.Отладка("Разбор команды: %1", ОписаниеКоманды.Команда);
ГлобальныеПараметры = мПараметры.НайтиСтроки(Новый Структура("ЭтоГлобальныйПараметр", Истина));
Для Каждого СтрГлобальныйПараметр Из ГлобальныеПараметры Цикл
СтрСуществующий = ОписаниеКоманды.ИменованныеПараметры.Найти(СтрГлобальныйПараметр.Имя,"Имя");
Если СтрСуществующий = Неопределено Тогда
- Лог.Отладка(СтрШаблон("Добавляю глобальный параметр: %1",СтрГлобальныйПараметр.Имя));
+ Лог.Отладка("Добавляю глобальный параметр: %1", СтрГлобальныйПараметр.Имя);
ЗаполнитьЗначенияСвойств(ОписаниеКоманды.ИменованныеПараметры.Добавить(), СтрГлобальныйПараметр,, "ЭтоГлобальныйПараметр");
КонецЕсли;
КонецЦикла;
@@ -144,7 +144,7 @@
Функция Разобрать(Знач ВходнойМассивПараметров) Экспорт
Если Лог.Уровень() = УровниЛога.Отладка Тогда
- Лог.Отладка(СтрШаблон("ВходнойМассивПараметров <%1>", СтрокаПараметров(ВходнойМассивПараметров)));
+ Лог.Отладка("ВходнойМассивПараметров <%1>", СтрокаПараметров(ВходнойМассивПараметров));
КонецЕсли;
ОписаниеКоманды = Неопределено;
@@ -293,7 +293,7 @@
Если ВыводитьОшибки И Лог.Уровень() > 0 Тогда
Сообщить(СтрШаблон("Не заполнен обязательный параметр %1", Строка.Имя));
Иначе
- Лог.Отладка(СтрШаблон("Не заполнен обязательный параметр %1", Строка.Имя));
+ Лог.Отладка("Не заполнен обязательный параметр %1", Строка.Имя);
КонецЕсли;
КонецЕсли;
@@ -351,7 +351,7 @@
Процедура РазобратьИменованныйПараметр(Знач Токен, Значение, Знач ИменованныеПараметры, Знач РезультатРазбора)
Перем ЗначениеТокена;
- Лог.Отладка(СтрШаблон("Это именованный параметр: %1?", Токен));
+ Лог.Отладка("Это именованный параметр: %1?", Токен);
СтрПараметр = ИменованныеПараметры.Найти(Токен, "Имя");
//TODO: для параметров вида --param=value значение получаем сразу и передаем в процедуру,
// а в случаи пустого получаем следующий параметр.
@@ -367,7 +367,7 @@
Иначе
РезультатРазбора[Токен] = ЗначениеТокена;
КонецЕсли;
- Лог.Отладка(СтрШаблон("Нашли значение именованного параметра: %1", РезультатРазбора[Токен]));
+ Лог.Отладка("Нашли значение именованного параметра: %1", РезультатРазбора[Токен]);
КонецПроцедуры
@@ -377,12 +377,12 @@
РезультатРазбора = Новый Соответствие;
Для Каждого СтрПараметр Из ИменованныеПараметры.НайтиСтроки(Новый Структура("ЭтоФлаг",Истина)) Цикл
- Лог.Отладка(СтрШаблон("Сбрасываю параметр-флаг: %1", СтрПараметр.Имя));
+ Лог.Отладка("Сбрасываю параметр-флаг: %1", СтрПараметр.Имя);
РезультатРазбора[СтрПараметр.Имя] = Ложь;
КонецЦикла;
Для Каждого СтрПараметр Из ИменованныеПараметры.НайтиСтроки(Новый Структура("Обязательный",Истина)) Цикл
- Лог.Отладка(СтрШаблон("Создаю обязательный параметры: %1", СтрПараметр.Имя));
+ Лог.Отладка("Создаю обязательный параметры: %1", СтрПараметр.Имя);
РезультатРазбора[СтрПараметр.Имя] = Неопределено;
КонецЦикла;
@@ -395,7 +395,7 @@
Пока Истина Цикл
Токен = СледующийТокен();
- Лог.Отладка(СтрШаблон("Выбран токен: %1", Токен));
+ Лог.Отладка("Выбран токен: %1", Токен);
Если Токен = Неопределено Тогда
Лог.Отладка("Закончились токены");
@@ -413,9 +413,9 @@
Если ЭтоИменованныйПараметр(Токен, ИменованныеПараметры) Тогда
РазобратьИменованныйПараметр(Токен, Неопределено, ИменованныеПараметры, РезультатРазбора);
ИначеЕсли ЭтоПараметрФлаг(Токен, ИменованныеПараметры) Тогда
- Лог.Отладка(СтрШаблон("Это параметр-флаг: %1?",Токен));
+ Лог.Отладка("Это параметр-флаг: %1?",Токен);
РезультатРазбора[Токен] = Истина;
- Лог.Отладка(СтрШаблон("Нашли параметр-флаг: %1", РезультатРазбора[Токен]));
+ Лог.Отладка("Нашли параметр-флаг: %1", РезультатРазбора[Токен]);
ИначеЕсли СтрНайти(Токен, "=") > 0 И Лев(Токен, 2) = "--" Тогда
Индекс = СтрНайти(Токен, "=");
КлючТокена = Лев(Токен, Индекс-1);
@@ -428,12 +428,12 @@
Иначе
ОписаниеПараметра = СледующийПозиционныйПараметр(ПозиционныеПараметры);
Если ОписаниеПараметра.ЭтоКоллекция Тогда
- Лог.Отладка(СтрШаблон("Перехожу к чтению параметра-коллекции <%1>",ОписаниеПараметра.Имя));
+ Лог.Отладка("Перехожу к чтению параметра-коллекции <%1>",ОписаниеПараметра.Имя);
ТекущийПараметрКоллекция = Новый Массив;
РезультатРазбора[ОписаниеПараметра.Имя] = ТекущийПараметрКоллекция;
ТекущийПараметрКоллекция.Добавить(Токен);
Иначе
- Лог.Отладка(СтрШаблон("Установлено значение позиционного параметра <%1=%2>", ОписаниеПараметра.Имя, Токен));
+ Лог.Отладка("Установлено значение позиционного параметра <%1=%2>", ОписаниеПараметра.Имя, Токен);
РезультатРазбора[ОписаниеПараметра.Имя] = Токен;
КонецЕсли;
КонецЕсли;
@@ -447,7 +447,7 @@
Процедура ВывестиРезультатРазбора(РезультатРазбора)
Если Лог.Уровень() = УровниЛога.Отладка Тогда
Для Каждого КлючЗначение Из РезультатРазбора Цикл
- Лог.Отладка(" "+КлючЗначение.Ключ+":"+КлючЗначение.Значение);
+ Лог.Отладка(" %1:%2", КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
@@ -472,13 +472,13 @@
КонецФункции
Функция ЭтоИменованныйПараметр(Знач Токен, Знач ИменованныеПараметры)
- Лог.Отладка(СтрШаблон("Ищу именованный параметр %1", Токен));
+ Лог.Отладка("Ищу именованный параметр %1", Токен);
СтрПараметр = ИменованныеПараметры.Найти(Токен, "Имя");
Возврат СтрПараметр <> Неопределено и Не СтрПараметр.ЭтоФлаг;
КонецФункции
Функция ЭтоПараметрФлаг(Знач Токен, Знач ИменованныеПараметры)
- Лог.Отладка(СтрШаблон("Ищу параметр-флаг %1", Токен));
+ Лог.Отладка("Ищу параметр-флаг %1", Токен);
СтрПараметр = ИменованныеПараметры.Найти(Токен, "Имя");
Возврат СтрПараметр <> Неопределено и СтрПараметр.ЭтоФлаг;
КонецФункции
From 2ea045c739ab83ec9f5f88d1a073bbafe48800bc Mon Sep 17 00:00:00 2001
From: Anton Myagkov
Date: Wed, 5 Dec 2018 16:44:42 +0300
Subject: [PATCH 3/3]
https://github.com/oscript-library/cmdline/pull/14#pullrequestreview-181749249
---
src/cmdline.os | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/cmdline.os b/src/cmdline.os
index f19839d..4edbe5b 100644
--- a/src/cmdline.os
+++ b/src/cmdline.os
@@ -519,7 +519,7 @@
КонецФункции
-Функция ДобавитьПараметрВТаблицу(Знач Таблица, Имя, Пояснение, Флаг, Глобальный, Обязательный)
+Функция ДобавитьПараметрВТаблицу(Знач Таблица, Имя, Пояснение, Флаг, Глобальный = Ложь, Обязательный = Ложь)
СтрПараметр = Таблица.Добавить();