Skip to content

Commit 9c40cc4

Browse files
committed
Немного оптимизации работы команды приложения
(cherry picked from commit 85fecb1)
1 parent e5794ef commit 9c40cc4

File tree

1 file changed

+50
-23
lines changed

1 file changed

+50
-23
lines changed

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

Lines changed: 50 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -96,23 +96,7 @@
9696
// Произвольный - Значение - полученное значение в результате чтения строки использования или переменных окружения
9797
Функция ЗначениеОпции(Знач ИмяОпции) Экспорт
9898

99-
Если СтрНачинаетсяС(ИмяОпции, "-")
100-
Или СтрНачинаетсяС(ИмяОпции, "--") Тогда
101-
// Ничего не делаем переданы уже нормализированные опции
102-
Иначе
103-
Префикс = "-";
104-
Если СтрДлина(ИмяОпции) > 1 Тогда
105-
Префикс = "--";
106-
КонецЕсли;
107-
ИмяОпции = СтрШаблон("%1%2",Префикс,ИмяОпции);
108-
КонецЕсли;
109-
110-
ОпцииИндекса = ОпцииИндекс[ИмяОпции];
111-
Если ОпцииИндекса = Неопределено Тогда
112-
ВызватьИсключение СтрШаблон("Ошибка получение значения опции <%1>. Опция не найдена в индексе опций команды", ИмяОпции);
113-
КонецЕсли;
114-
115-
Возврат ОпцииИндекса.Значение;
99+
Возврат ОпцияИзИндекса(ИмяОпции).Значение;
116100

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

@@ -125,12 +109,7 @@
125109
// Произвольный - Значение - полученное значение в результате чтения строки использования или переменных окружения
126110
Функция ЗначениеАргумента(Знач ИмяАргумента) Экспорт
127111

128-
АргументИндекса = АргументыИндекс[ВРег(ИмяАргумента)];
129-
Если АргументИндекса = Неопределено Тогда
130-
ВызватьИсключение СтрШаблон("Ошибка получение значения аргумента <%1>. Аргумент не найден в индексе аргументов команды", ИмяАргумента);
131-
КонецЕсли;
132-
133-
Возврат АргументИндекса.Значение;
112+
Возврат АргументИзИндекса(ИмяАргумента).Значение;
134113

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

@@ -453,6 +432,8 @@
453432
парсер = Новый Парсер(ТокеныПарсера, ПараметрыПарсера);
454433
НачальноеСостояние = парсер.Прочитать();
455434

435+
ВывестиПутьПарсераВОтладке();
436+
456437
КонецПроцедуры
457438

458439
// Функция добавляет опцию команды и возвращает экземпляр данной опции
@@ -496,6 +477,38 @@
496477

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

480+
Функция ОпцияИзИндекса(Знач ИмяОпции) Экспорт
481+
482+
Если СтрНачинаетсяС(ИмяОпции, "-")
483+
Или СтрНачинаетсяС(ИмяОпции, "--") Тогда
484+
// Ничего не делаем переданы уже нормализированные опции
485+
Иначе
486+
Префикс = "-";
487+
Если СтрДлина(ИмяОпции) > 1 Тогда
488+
Префикс = "--";
489+
КонецЕсли;
490+
ИмяОпции = СтрШаблон("%1%2",Префикс,ИмяОпции);
491+
КонецЕсли;
492+
493+
ОпцииИндекса = ОпцииИндекс[ИмяОпции];
494+
Если ОпцииИндекса = Неопределено Тогда
495+
ВызватьИсключение СтрШаблон("Ошибка получение значения опции <%1>. Опция не найдена в индексе опций команды", ИмяОпции);
496+
КонецЕсли;
497+
498+
Возврат ОпцииИндекса;
499+
500+
КонецФункции
501+
502+
Функция АргументИзИндекса(Знач ИмяАргумента) Экспорт
503+
504+
АргументИндекса = АргументыИндекс[ВРег(ИмяАргумента)];
505+
Если АргументИндекса = Неопределено Тогда
506+
ВызватьИсключение СтрШаблон("Ошибка получение значения аргумента <%1>. Аргумент не найден в индексе аргументов команды", ИмяАргумента);
507+
КонецЕсли;
508+
509+
Возврат АргументИндекса;
510+
511+
КонецФункции
499512
// Процедура устанавливает процедуру "ВыполнитьКоманду" выполнения для команды
500513
//
501514
// Параметры:
@@ -626,6 +639,7 @@
626639
Для каждого КлючЗначение Из Опции Цикл
627640

628641
КлассОпции = КлючЗначение.Ключ;
642+
КлассОпции.ИзФайла();
629643
КлассОпции.ИзПеременнойОкружения();
630644

631645
Для каждого ИмяПараметра Из КлассОпции.НаименованияПараметров Цикл
@@ -643,6 +657,7 @@
643657
Для каждого КлючЗначение Из Аргументы Цикл
644658

645659
КлассАргумента = КлючЗначение.Ключ;
660+
КлассАргумента.ИзФайла();
646661
КлассАргумента.ИзПеременнойОкружения();
647662

648663
Для каждого ИмяПараметра Из КлассАргумента.НаименованияПараметров Цикл
@@ -944,6 +959,18 @@
944959

945960
КонецПроцедуры
946961

962+
Процедура ВывестиПутьПарсераВОтладке()
963+
964+
Если Лог.Уровень() = УровниЛога.Отладка Тогда
965+
966+
fsm = Новый ВыборСовпадений();
967+
Лог.Отладка("Вывожу текущий путь парсинга: ");
968+
Лог.Отладка(fsm.СгенеритьСтрокуПути(НачальноеСостояние));
969+
970+
КонецЕсли;
971+
972+
КонецПроцедуры
973+
947974
#КонецОбласти
948975

949976
Процедура ПриСозданииОбъекта(ИмяКоманды, ОписаниеКоманды, КлассРеализацииКоманды, ПриложениеКоманды = Неопределено)

0 commit comments

Comments
 (0)