From a80238e0c4bd347b2020b1d67b2313c8f5bdac99 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Wed, 10 Jan 2018 14:48:02 +0300 Subject: [PATCH 01/11] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BE=D0=BF=D1=86=D0=B8=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\266\320\265\320\275\320\270\321\217.os" | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 6dc1ac5..3002164 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -96,7 +96,23 @@ // Произвольный - Значение - полученное значение в результате чтения строки использования или переменных окружения Функция ЗначениеОпции(Знач ИмяОпции) Экспорт - Возврат ОпцииИндекс[ИмяОпции].Значение; + Если СтрНачинаетсяС(ИмяОпции, "-") + Или СтрНачинаетсяС(ИмяОпции, "--") Тогда + // Ничего не делаем переданы уже нормализированные опции + Иначе + Префикс = "-"; + Если СтрДлина(ИмяОпции) > 1 Тогда + Префикс = "--"; + КонецЕсли; + ИмяОпции = СтрШаблон("%1%2",Префикс,ИмяОпции); + КонецЕсли; + + ОпцииИндекса = ОпцииИндекс[ИмяОпции]; + Если ОпцииИндекса = Неопределено Тогда + ВызватьИсключение СтрШаблон("Ошибка получение значения опции <%1>. Опция не найдена в индексе опций команды", ИмяОпции); + КонецЕсли; + + Возврат ОпцииИндекса.Значение; КонецФункции @@ -109,7 +125,12 @@ // Произвольный - Значение - полученное значение в результате чтения строки использования или переменных окружения Функция ЗначениеАргумента(Знач ИмяАргумента) Экспорт - Возврат АргументыИндекс[ИмяАргумента].Значение; + АргументИндекса = АргументыИндекс[ВРег(ИмяАргумента)]; + Если АргументИндекса = Неопределено Тогда + ВызватьИсключение СтрШаблон("Ошибка получение значения аргумента <%1>. Аргумент не найден в индексе аргументов команды", ИмяАргумента); + КонецЕсли; + + Возврат АргументИндекса.Значение; КонецФункции From bddf9b63168efb4c7da390002627e9ef115603b5 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Wed, 10 Jan 2018 19:47:08 +0300 Subject: [PATCH 02/11] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D1=87=D0=B8=D1=81=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\266\320\265\320\275\320\270\321\217.os" | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 3002164..151a191 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -217,7 +217,17 @@ ТаблицаОпций = ТаблицаАргументовДляСправки(); Для каждого СтрокаТаблицы Из ТаблицаОпций Цикл - КонсольВывода.ВывестиСтроку(СтрШаблон(" %3%1%4%2", Символы.Таб, Символы.ВК,СтрокаТаблицы.Наименование, СтрокаТаблицы.Описание)); + КонсольВывода.ВывестиСтроку(СтрШаблон(" %3%1%4%2", Символы.Таб, Символы.ВК, СтрокаТаблицы.Наименование, СтрокаТаблицы.Описание)); + + Если Не ПустаяСтрока(СтрокаТаблицы.ДополнительноеОписание) Тогда + ДлинаДополнения = СтрДлина(СтрШаблон(" %2%1%", Символы.Таб, СтрокаТаблицы.Наименование)); + МассивСтрок = СтрРазделить(СтрокаТаблицы.ДополнительноеОписание, Ложь); + + Для каждого СтрокаОписания Из МассивСтрок Цикл + КонсольВывода.ВывестиСтроку(СтрШаблон("%1%2", ДополнитьСтрокуПробелами(СтрокаОписания, ДлинаДополнения), Символы.ВК)); + КонецЦикла; + + КонецЕсли; КонецЦикла; @@ -232,7 +242,17 @@ ТаблицаОпций = ТаблицаОпцийДляСправки(); Для каждого СтрокаТаблицы Из ТаблицаОпций Цикл - КонсольВывода.ВывестиСтроку(СтрШаблон(" %3%1%4%2", Символы.Таб, Символы.ВК,СтрокаТаблицы.Наименование, СтрокаТаблицы.Описание)); + КонсольВывода.ВывестиСтроку(СтрШаблон(" %3%1%4%2", Символы.Таб, Символы.ВК, СтрокаТаблицы.Наименование, СтрокаТаблицы.Описание)); + + Если Не ПустаяСтрока(СтрокаТаблицы.ДополнительноеОписание) Тогда + ДлинаДополнения = СтрДлина(СтрШаблон(" %2%1%", Символы.Таб, СтрокаТаблицы.Наименование)); + МассивСтрок = СтрРазделить(СтрокаТаблицы.ДополнительноеОписание, Ложь); + + Для каждого СтрокаОписания Из МассивСтрок Цикл + КонсольВывода.ВывестиСтроку(СтрШаблон("%1%2", ДополнитьСтрокуПробелами(СтрокаОписания, ДлинаДополнения), Символы.ВК)); + КонецЦикла; + + КонецЕсли; КонецЦикла; КонсольВывода.ВывестиСтроку(""); @@ -728,6 +748,7 @@ Таблица.Колонки.Добавить("Наименование"); Таблица.Колонки.Добавить("Описание"); Таблица.Колонки.Добавить("ДлинаНаименования"); + Таблица.Колонки.Добавить("ДополнительноеОписание"); Для каждого КлючЗначение Из Аргументы Цикл @@ -742,6 +763,7 @@ НоваяЗапись.Наименование = ИмяОпции; НоваяЗапись.Описание = ОписаниеОпции; + НоваяЗапись.ДополнительноеОписание = АргументСправки.ПолучитьПодробноеОписание(); НоваяЗапись.ДлинаНаименования = СтрДлина(ИмяОпции)+1; КонецЦикла; @@ -774,6 +796,7 @@ Таблица = новый ТаблицаЗначений; Таблица.Колонки.Добавить("Наименование"); Таблица.Колонки.Добавить("Описание"); + Таблица.Колонки.Добавить("ДополнительноеОписание"); Таблица.Колонки.Добавить("ДлинаНаименования"); Если Опции.Количество() = 0 Тогда @@ -790,9 +813,10 @@ ПеременныеОкружения = ФорматироватьПеременнуюОкруженияОпцииДляСправки(ОпцияСправки); ЗначениеОпции = ФорматироватьЗначениеОпцииДляСправки(ОпцияСправки); ОписаниеОпции = ОпцияСправки.Описание + " " + ПеременныеОкружения + " " + ЗначениеОпции; - + НоваяЗапись.Наименование = ИмяОпции; НоваяЗапись.Описание = ОписаниеОпции; + НоваяЗапись.ДополнительноеОписание = ОпцияСправки.ПолучитьПодробноеОписание(); НоваяЗапись.ДлинаНаименования = СтрДлина(ИмяОпции)+1; КонецЦикла; From 6168e091d91d4fee1ca3dc1b4001de774c721717 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Wed, 10 Jan 2018 19:47:18 +0300 Subject: [PATCH 03/11] =?UTF-8?q?=D0=9A=D0=BB=D0=B0=D1=81=D1=81=20=D1=82?= =?UTF-8?q?=D0=B8=D0=BF=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D1=87=D0=B8=D1=81?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\273\320\265\320\275\320\270\320\265.os" | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/types/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.os" diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/types/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/types/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.os" new file mode 100644 index 0000000..06e0ea8 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/types/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.os" @@ -0,0 +1,76 @@ + +Перем ПеречисленияКласса Экспорт; // Соответствие + +Перем ОписаниеОшибкиКласса; + +Функция ВСтроку(Значение) Экспорт + + Если ТипЗнч(Значение) = Тип("Сценарий") Тогда + Возврат Значение.ВСтроку(); + КонецЕсли; + + Возврат Строка(Значение); + +КонецФункции + +Функция ПодробноеОписание() Экспорт + + СтрокаОписания = ""; + + Для каждого КлючЗначение Из ПеречисленияКласса Цикл + + СтрокаОписания = СтрШаблон("%1: %2", КлючЗначение.Значение.Наименование, КлючЗначение.Значение.ДополнительнаяСправка) + Символы.ПС; + + КонецЦикла; + + Возврат СтрокаОписания; + +КонецФункции + +Функция УстановитьЗначение(Знач ВходящееЗначение, Значение) Экспорт + + ЗначениеПеречисления = ПеречисленияКласса[ВходящееЗначение]; + + Если НЕ ЗначениеПеречисления = Неопределено Тогда + Значение = ЗначениеПеречисления.Значение; + Иначе + ОписаниеОшибкиКласса = "Выбранное значение перечисления не соответствует доступным"; + КонецЕсли; + + Возврат Значение; + +КонецФункции + +Функция Ошибка(ЕстьОшибка = Ложь) Экспорт + + Если НЕ ПустаяСтрока(ОписаниеОшибкиКласса) Тогда + ЕстьОшибка = Истина; + КонецЕсли; + + Возврат ОписаниеОшибкиКласса; + +КонецФункции + +Процедура УстановитьПеречисления(Знач СоответствиеПеречислений) Экспорт + + Если Тип("Соответствие") = ТипЗнч(СоответствиеПеречислений) Тогда + ПеречисленияКласса = СоответствиеПеречислений; + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьПеречисление(Знач ПользовательскоеЗначение, Знач Значение, Знач ДополнительнаяСправка = "") Экспорт + + ПеречисленияКласса.Вставить(ПользовательскоеЗначение, НовоеПеречисление(ПользовательскоеЗначение, Значение, ДополнительнаяСправка = "")); + +КонецПроцедуры + +Функция НовоеПеречисление(Знач Наименование, Знач Значение, Знач ДополнительнаяСправка = "") + + Возврат Новый Структура("Наименование, Значение, ДополнительнаяСправка", Наименование, Значение, ДополнительнаяСправка); + +КонецФункции + +ПеречисленияКласса = Новый Соответствие; + +ОписаниеОшибкиКласса = ""; \ No newline at end of file From cf128cea37071363ea28efbd2aace03a3cc0b960 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Wed, 10 Jan 2018 19:47:53 +0300 Subject: [PATCH 04/11] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BF=D0=B0=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20=D1=82=D0=B8=D0=BF=D0=BE?= =?UTF-8?q?=D0=BC=20=D0=BF=D0=B5=D1=80=D0=B5=D1=87=D0=B8=D1=81=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\274\320\260\320\275\320\264\321\213.os" | 100 ++++++++++++++++-- 1 file changed, 92 insertions(+), 8 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" index d8b2b6f..5675a81 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" @@ -8,7 +8,7 @@ // Подробное описание параметра команды // Используется при выводе справки (запланировано) -Перем ПодробноеОписание Экспорт; // Строка +Перем ПодробноеОписаниеПараметра Экспорт; // Строка // Содержит имя переменной окружения, откуда получать значение // допустимо использование нескольких переменных окружения через пробел @@ -87,6 +87,7 @@ ТипПараметра = ВходящийТипПараметра; РазделительМассива = Неопределено; + ПодробноеОписаниеПараметра = ""; ПодготовитьНаименованияПараметров(); КонецПроцедуры @@ -123,6 +124,23 @@ КонецФункции +// Возвращает подробное описание для справки +// +// Возвращаемое значение: +// строка +Функция ПолучитьПодробноеОписание() Экспорт + + ВстроенныеТипы = ВстроенныеТипЗначенийПараметров(); + ОпределенныйТип = ВстроенныеТипы[Строка(ТипЗнч(ТипЗначенияПараметра))]; + Если ОпределенныйТип = Неопределено + Или Тип("ТипПеречисление") = ОпределенныйТип Тогда + ПодробноеОписаниеПараметра = ТипЗначенияПараметра.ПодробноеОписание(); + КонецЕсли; + + Возврат ПодробноеОписаниеПараметра; + +КонецФункции + // Возвращает истина, если данный параметр обязателен для указания // // Возвращаемое значение: @@ -475,21 +493,87 @@ КонецФункции +// Функция устанавливает тип параметра "Перечисление" +// возвращает текущий параметр команды +// +// Параметры: +// ДоступныеПеречисления - Соответсвие +// Ключ - Строка +// Значение - Структура ("Наименование, Значение, ДополнительнаяСправка") +// Возвращаемое значение: +// ЭтотОбъект - класс ПараметрКоманды +// Вызов необязателен, автоматически определяется при создании параметра, +// если передано значение по умолчанию +Функция ТПеречисление(Знач ДоступныеПеречисления = Неопределено) Экспорт + + ТипОпции = ТипЗнч(Неопределено); + ТипЭлементаОпции = ТипОпции; + ТипЗначенияПараметра = Новый ТипПеречисление(); + + Если Не ДоступныеПеречисления = Неопределено Тогда + ТипЗначенияПараметра.УстановитьПеречисления(ДоступныеПеречисления); + КонецЕсли; + + Возврат ЭтотОбъект; + +КонецФункции + +// Функция устанавливает произвольный тип параметра +// возвращает текущий параметр команды +// +// Параметры: +// Наименование - строка - пользовательное значение перечисления +// Значение - произвольный - системное значение перечисления +// ДополнительнаяСправка - строка - дополнительная строка для справки +// +Функция Перечисление(Знач Наименование, Знач Значение = Неопределено, Знач ДополнительнаяСправка = "") Экспорт + + Если Не ТипЗнч(ТипЗначенияПараметра) = Тип("ТипПеречисление") Тогда + ВызватьИсключение "Указание перечисления допустимо только для типа параметра перечисление"; + КонецЕсли; + + Если Значение = Неопределено Тогда + Значение = Наименование; + КонецЕсли; + + ТипЗначенияПараметра.ДобавитьПеречисление(Наименование, Значение, ДополнительнаяСправка); + + Возврат ЭтотОбъект; + +КонецФункции + +// Функция устанавливает признак обязательности указания данного параметра +// возвращает текущий параметр команды +// +// Параметры: +// Признак - булево - признак обязательности указания данного параметра (по умолчанию Истина) +// +// Возвращаемое значение: +// ЭтотОбъект - класс ПараметрКоманды +Функция ПодробноеОписание(Знач ВходящееПодробноеОписание) Экспорт + + ПодробноеОписаниеПараметра = ВходящееПодробноеОписание; + + Возврат ЭтотОбъект; + +КонецФункции + #КонецОбласти Функция ВстроенныеТипЗначенийПараметров() ВстроенныеТипы = Новый Соответствие; - ВстроенныеТипы.Вставить("Булево", Новый ТипБулево); - ВстроенныеТипы.Вставить("Число", Новый ТипЧисло); - ВстроенныеТипы.Вставить("Дата", Новый ТипДатаВремя); + ВстроенныеТипы.Вставить("ТипБулево", Тип("ТипБулево")); + ВстроенныеТипы.Вставить("ТипЧисло", Тип("ТипЧисло")); + ВстроенныеТипы.Вставить("ТипДатаВремя", Тип("ТипДатаВремя")); //ВстроенныеТипы.Вставить("Длительность", Новый ТипДлительность); - ВстроенныеТипы.Вставить("Строка", Новый ТипСтрока); + ВстроенныеТипы.Вставить("ТипСтрока", Тип("ТипСтрока")); //ВстроенныеТипы.Вставить("МассивДлительностей", Новый ТипМассивДлительностей); - ВстроенныеТипы.Вставить("МассивЧисел", Новый ТипМассивЧисел); - ВстроенныеТипы.Вставить("МассивСтрок", Новый ТипМассивСтрок); - ВстроенныеТипы.Вставить("МассивДат", Новый ТипМассивДат); + ВстроенныеТипы.Вставить("ТипМассивЧисел", Тип("ТипМассивЧисел")); + ВстроенныеТипы.Вставить("ТипМассивСтрок", Тип("ТипМассивСтрок")); + ВстроенныеТипы.Вставить("ТипМассивДат", Тип("ТипМассивДат")); + ВстроенныеТипы.Вставить("ТипПеречисление", Тип("ТипПеречисление")); Возврат ВстроенныеТипы; From 5c50c334b017fc1cd9631ed04262dccd262824a6 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Wed, 10 Jan 2018 19:48:01 +0300 Subject: [PATCH 05/11] =?UTF-8?q?=D0=94=D0=B2=D0=B0=20=D0=BB=D0=B5=D0=B3?= =?UTF-8?q?=D0=BA=D0=B8=D1=85=20=D1=82=D0=B5=D1=81=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...6\320\265\320\275\320\270\320\265_test.os" | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git "a/tests/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265_test.os" "b/tests/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265_test.os" index 7428860..4054257 100644 --- "a/tests/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265_test.os" +++ "b/tests/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265_test.os" @@ -12,6 +12,8 @@ ИменаТестов.Добавить("ТестДолжен_ТолькоАргументы"); //ИменаТестов.Добавить("ТестДолжен_ТолькоОпции"); //ИменаТестов.Добавить("ТестДолжен_ПроверитьПриложения"); + ИменаТестов.Добавить("ТестДолжен_ПараметрыПеречисленияОпции"); + ИменаТестов.Добавить("ТестДолжен_ПараметрыПеречисленияОпцииВыводHelp"); Возврат ИменаТестов; @@ -44,6 +46,52 @@ КонецПроцедуры + +Процедура ТестДолжен_ПараметрыПеречисленияОпции() Экспорт + + Приложение = Новый КонсольноеПриложение("cp", ""); + + enum = Приложение.Опция("enum e", "yellow", "Опция перечисление").ТПеречисление() + .Перечисление("yellow", "yellow", "Это желтый цвет") + .Перечисление("red", "red" , "Это красный цвет") + .Перечисление("blue", "blue", "Это синий цвет") + ; + + Приложение.УстановитьОсновноеДействие(ЭтотОбъект); + + ВходящиеАргументы = Новый Массив; + ВходящиеАргументы.Добавить("-e"); + ВходящиеАргументы.Добавить("yellow"); + + Приложение.Запустить(ВходящиеАргументы); + + Утверждения.ПроверитьРавенство(enum.Значение, "yellow", "Аргумент enum не равен ожидаемому"); + +КонецПроцедуры + +Процедура ТестДолжен_ПараметрыПеречисленияОпцииВыводHelp() Экспорт + + Приложение = Новый КонсольноеПриложение("cp", ""); + + enum = Приложение.Опция("enum e", "yellow", "Опция перечисление").ТПеречисление() + .Перечисление("yellow", "yellow", "Это желтый цвет") + .Перечисление("red", "red" , "Это красный цвет") + .Перечисление("blue", "blue", "Это синий цвет") + ; + + Приложение.УстановитьОсновноеДействие(ЭтотОбъект); + + ВходящиеАргументы = Новый Массив; + ВходящиеАргументы.Добавить("--help"); + + Приложение.Запустить(ВходящиеАргументы); + + Утверждения.ПроверитьРавенство(enum.Значение, "yellow", "Аргумент enum не равен ожидаемому"); + +КонецПроцедуры + + + Процедура ВыполнитьКоманду(Знач Команда) Экспорт КонецПроцедуры From 82eb96c693e514b0674db3656b3034e9e3841c09 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Fri, 26 Jan 2018 11:01:27 +0300 Subject: [PATCH 06/11] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=81=D0=BE=D0=B2=D0=BF=D0=B0=D0=B4=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=81=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D0=BC=D0=B8=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...276\320\274\320\260\320\275\320\264\321\213.os" | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" index 5675a81..79339e6 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" @@ -522,21 +522,21 @@ // возвращает текущий параметр команды // // Параметры: -// Наименование - строка - пользовательное значение перечисления -// Значение - произвольный - системное значение перечисления -// ДополнительнаяСправка - строка - дополнительная строка для справки +// НаименованиеПеречисления - строка - пользовательное значение перечисления +// ЗначениеПеречисления - произвольный - системное значение перечисления +// ДополнительнаяСправкаПеречисления - строка - дополнительная строка для справки // -Функция Перечисление(Знач Наименование, Знач Значение = Неопределено, Знач ДополнительнаяСправка = "") Экспорт +Функция Перечисление(Знач НаименованиеПеречисления, Знач ЗначениеПеречисления = Неопределено, Знач ДополнительнаяСправкаПеречисления = "") Экспорт Если Не ТипЗнч(ТипЗначенияПараметра) = Тип("ТипПеречисление") Тогда ВызватьИсключение "Указание перечисления допустимо только для типа параметра перечисление"; КонецЕсли; - Если Значение = Неопределено Тогда - Значение = Наименование; + Если ЗначениеПеречисления = Неопределено Тогда + ЗначениеПеречисления = НаименованиеПеречисления; КонецЕсли; - ТипЗначенияПараметра.ДобавитьПеречисление(Наименование, Значение, ДополнительнаяСправка); + ТипЗначенияПараметра.ДобавитьПеречисление(НаименованиеПеречисления, ЗначениеПеречисления, ДополнительнаяСправкаПеречисления); Возврат ЭтотОбъект; From 22d9c633ad86eda22c6347f62bdeb2e7973a6106 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Fri, 26 Jan 2018 11:01:53 +0300 Subject: [PATCH 07/11] =?UTF-8?q?=D0=9E=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D1=80=D0=BE=D0=B1=D0=BD=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\270\321\201\320\273\320\265\320\275\320\270\320\265.os" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/types/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/types/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.os" index 06e0ea8..b90c32f 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/types/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/types/\320\242\320\270\320\277\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\320\265.os" @@ -19,7 +19,7 @@ Для каждого КлючЗначение Из ПеречисленияКласса Цикл - СтрокаОписания = СтрШаблон("%1: %2", КлючЗначение.Значение.Наименование, КлючЗначение.Значение.ДополнительнаяСправка) + Символы.ПС; + СтрокаОписания = СтрокаОписания + СтрШаблон("%1: %2", КлючЗначение.Значение.Наименование, КлючЗначение.Значение.ДополнительнаяСправка) + Символы.ПС; КонецЦикла; @@ -61,7 +61,7 @@ Процедура ДобавитьПеречисление(Знач ПользовательскоеЗначение, Знач Значение, Знач ДополнительнаяСправка = "") Экспорт - ПеречисленияКласса.Вставить(ПользовательскоеЗначение, НовоеПеречисление(ПользовательскоеЗначение, Значение, ДополнительнаяСправка = "")); + ПеречисленияКласса.Вставить(ПользовательскоеЗначение, НовоеПеречисление(ПользовательскоеЗначение, Значение, ДополнительнаяСправка)); КонецПроцедуры From b6cdd60161071b6018fd786b1cb792ea0f72bcd5 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Fri, 26 Jan 2018 11:02:28 +0300 Subject: [PATCH 08/11] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BD=D1=8B=D0=B9=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\266\320\265\320\275\320\270\321\217.os" | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 151a191..b56c048 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -220,11 +220,11 @@ КонсольВывода.ВывестиСтроку(СтрШаблон(" %3%1%4%2", Символы.Таб, Символы.ВК, СтрокаТаблицы.Наименование, СтрокаТаблицы.Описание)); Если Не ПустаяСтрока(СтрокаТаблицы.ДополнительноеОписание) Тогда - ДлинаДополнения = СтрДлина(СтрШаблон(" %2%1%", Символы.Таб, СтрокаТаблицы.Наименование)); - МассивСтрок = СтрРазделить(СтрокаТаблицы.ДополнительноеОписание, Ложь); + ДлинаДополнения = СтрДлина(СтрШаблон(" %2%1%", Символы.Таб, СтрокаТаблицы.Наименование))+3; + МассивСтрок = СтрРазделить(СтрокаТаблицы.ДополнительноеОписание, Символы.ПС,Символы.ПС, Ложь); Для каждого СтрокаОписания Из МассивСтрок Цикл - КонсольВывода.ВывестиСтроку(СтрШаблон("%1%2", ДополнитьСтрокуПробелами(СтрокаОписания, ДлинаДополнения), Символы.ВК)); + КонсольВывода.ВывестиСтроку(СтрШаблон("%1%2", ДополнитьСтрокуПробеламиДо(СтрокаОписания, ДлинаДополнения), Символы.ВК)); КонецЦикла; КонецЕсли; @@ -245,11 +245,11 @@ КонсольВывода.ВывестиСтроку(СтрШаблон(" %3%1%4%2", Символы.Таб, Символы.ВК, СтрокаТаблицы.Наименование, СтрокаТаблицы.Описание)); Если Не ПустаяСтрока(СтрокаТаблицы.ДополнительноеОписание) Тогда - ДлинаДополнения = СтрДлина(СтрШаблон(" %2%1%", Символы.Таб, СтрокаТаблицы.Наименование)); - МассивСтрок = СтрРазделить(СтрокаТаблицы.ДополнительноеОписание, Ложь); - + ДлинаДополнения = СтрДлина(СтрШаблон(" %2%1%", Символы.Таб, СтрокаТаблицы.Наименование))+3; + + МассивСтрок = СтрРазделить(СтрокаТаблицы.ДополнительноеОписание, Символы.ПС, Ложь); Для каждого СтрокаОписания Из МассивСтрок Цикл - КонсольВывода.ВывестиСтроку(СтрШаблон("%1%2", ДополнитьСтрокуПробелами(СтрокаОписания, ДлинаДополнения), Символы.ВК)); + КонсольВывода.ВывестиСтроку(СтрШаблон("%1%2", ДополнитьСтрокуПробеламиДо(СтрокаОписания, ДлинаДополнения), Символы.ВК)); КонецЦикла; КонецЕсли; @@ -854,6 +854,18 @@ КонецФункции +Функция ДополнитьСтрокуПробеламиДо(Знач НачальнаяСтрока, Знач КоличествоПробелов) + + СтрокаПробелов = ""; + + Для Счетчик = 1 По КоличествоПробелов Цикл + СтрокаПробелов = СтрокаПробелов + " "; + КонецЦикла; + + Возврат СтрокаПробелов + НачальнаяСтрока; + +КонецФункции + Функция ФорматироватьИмяОпцииДляСправки(Знач КлассОпции) КороткоеНаименование = ""; From e10350129c003bfa79847ffd2d6d72edfa978560 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Fri, 26 Jan 2018 11:03:49 +0300 Subject: [PATCH 09/11] =?UTF-8?q?=D0=9B=D0=B8=D1=88=D0=BD=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index b56c048..897d94a 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/cmd/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -221,7 +221,7 @@ Если Не ПустаяСтрока(СтрокаТаблицы.ДополнительноеОписание) Тогда ДлинаДополнения = СтрДлина(СтрШаблон(" %2%1%", Символы.Таб, СтрокаТаблицы.Наименование))+3; - МассивСтрок = СтрРазделить(СтрокаТаблицы.ДополнительноеОписание, Символы.ПС,Символы.ПС, Ложь); + МассивСтрок = СтрРазделить(СтрокаТаблицы.ДополнительноеОписание, Символы.ПС, Ложь); Для каждого СтрокаОписания Из МассивСтрок Цикл КонсольВывода.ВывестиСтроку(СтрШаблон("%1%2", ДополнитьСтрокуПробеламиДо(СтрокаОписания, ДлинаДополнения), Символы.ВК)); From 8bdc72162ea2221002a510f7387ce7ac0a578ee9 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Fri, 26 Jan 2018 11:38:00 +0300 Subject: [PATCH 10/11] =?UTF-8?q?=D0=9D=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D1=88=D0=BE=D0=B9=20=D1=82=D0=B5=D1=81=D1=82=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=83=D1=8E=20=D1=84=D1=83=D0=BD=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\276\320\266\320\265\320\275\320\270\320\265_test.os" | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git "a/tests/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265_test.os" "b/tests/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265_test.os" index 4054257..73b975a 100644 --- "a/tests/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265_test.os" +++ "b/tests/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265_test.os" @@ -75,18 +75,21 @@ enum = Приложение.Опция("enum e", "yellow", "Опция перечисление").ТПеречисление() .Перечисление("yellow", "yellow", "Это желтый цвет") - .Перечисление("red", "red" , "Это красный цвет") + .Перечисление("red", "rediiii" , "Это красный цвет") .Перечисление("blue", "blue", "Это синий цвет") ; Приложение.УстановитьОсновноеДействие(ЭтотОбъект); ВходящиеАргументы = Новый Массив; - ВходящиеАргументы.Добавить("--help"); + // ВходящиеАргументы.Добавить("--help"); + + ВходящиеАргументы.Добавить("--enum"); + ВходящиеАргументы.Добавить("red"); Приложение.Запустить(ВходящиеАргументы); - Утверждения.ПроверитьРавенство(enum.Значение, "yellow", "Аргумент enum не равен ожидаемому"); + Утверждения.ПроверитьРавенство(enum.Значение, "rediiii", "Аргумент enum не равен ожидаемому"); КонецПроцедуры From 2e3b6a8b4d852d2d43aefdb19679310bcb46b792 Mon Sep 17 00:00:00 2001 From: khorevaa Date: Fri, 26 Jan 2018 11:41:04 +0300 Subject: [PATCH 11/11] bump version --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index af241dd..943d160 100644 --- a/packagedef +++ b/packagedef @@ -4,7 +4,7 @@ // Описание.Имя("cli") - .Версия("0.9.5") + .Версия("0.9.6") .Автор("Khorev Aleksey") .АдресАвтора("khorevaa@gmail.com") .Описание("Данный пакет облегчает создание консольных приложений на Oscript")