Skip to content

Commit bcf05d7

Browse files
committed
Finish 0.9.1
# Conflicts: # src/core/Классы/cmd/КомандаПриложения.os
2 parents b0ddc79 + 732fd37 commit bcf05d7

File tree

4 files changed

+61
-23
lines changed

4 files changed

+61
-23
lines changed
File renamed without changes.

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060

6161

6262
Описание.Имя("cli")
63-
.Версия("0.9.0")
63+
.Версия("0.9.1")
6464
.Автор("Khorev Aleksey")
6565
.АдресАвтора("khorevaa@gmail.com")
6666
.Описание("Данный пакет облегчает создание консольных приложений на Oscript")

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

Lines changed: 45 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@
6464

6565
РефлекторПроверкиКоманд = Новый Рефлектор;
6666

67+
ДействиеПередВыполнением = Неопределено;
68+
ДействиеПослеВыполнения = Неопределено;
69+
6770
УстановитьДействиеВыполнения(КлассРеализацииКоманды);
6871
УстановитьДействиеПередВыполнением(КлассРеализацииКоманды);
6972
УстановитьДействиеПослеВыполнения(КлассРеализацииКоманды);
@@ -98,6 +101,8 @@
98101

99102
Функция ПередВыполнениемКоманды(Знач Команда) Экспорт
100103

104+
Лог.Отладка("Выполнение метода <ПередВыполнениемКоманды>");
105+
Лог.Отладка("Необходимо вывести версию <%1>", Команда.Приложение.ФлагВерсия.Значение);
101106
Если Команда.Приложение.ФлагВерсия.Значение Тогда
102107

103108
ВывестиВерсию();
@@ -107,6 +112,10 @@
107112

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

115+
Функция ПослеВыполненияКоманды(Знач Команда) Экспорт
116+
117+
КонецФункции
118+
110119
Процедура ВывестиВерсию()
111120

112121
Сообщить(Приложение.ВерсияПриложения);
@@ -146,8 +155,14 @@
146155
КонецЕсли;
147156

148157
Если КонечныйИндексКоманды = АргументыCLI.ВГраница() Тогда
158+
159+
ДействиеПередВыполнением.Исполнить(ЭтотОбъект);
160+
149161
Лог.Отладка("Выполняю полезную работу %1", Имя);
150162
ДействиеВыполнения.Исполнить(ЭтотОбъект);
163+
164+
ДействиеПослеВыполнения.Исполнить(ЭтотОбъект);
165+
151166
Возврат;
152167
КонецЕсли;
153168

@@ -177,7 +192,7 @@
177192

178193
КонецЦикла;
179194

180-
195+
181196
Если СтрНачинаетсяС(ПервыйАргумент,"-") Тогда
182197
ВывестиСправку();
183198
ВызватьИсключение "Не известна опция";
@@ -192,8 +207,8 @@
192207

193208
Процедура УстановитьДействиеВыполнения(КлассРеализации, ИмяПроцедуры = "ВыполнитьКоманду") Экспорт
194209

195-
Если ПроверитьМетодВыполнитьКоманду(КлассРеализации) Тогда
196-
ВызватьИсключение СтрШаблон("У класса <%1> не задан обязательный метод: ВыполнитьКоманду", КлассРеализации);
210+
Если ПроверитьМетодВыполнитьКоманду(КлассРеализации, ИмяПроцедуры) Тогда
211+
ВызватьИсключение СтрШаблон("У класса <%1> не задан обязательный метод <%2>", КлассРеализации, ИмяПроцедуры);
197212
КонецЕсли;
198213

199214
ДействиеВыполнения = Делегаты.Создать(КлассРеализации, ИмяПроцедуры);
@@ -202,26 +217,34 @@
202217

203218
Процедура УстановитьДействиеПередВыполнением(КлассРеализации, ИмяПроцедуры = "ПередВыполнениемКоманды") Экспорт
204219

205-
Если ПроверитьМетодПередВыполнениемКоманды(КлассРеализации) Тогда
206-
220+
Лог.Отладка("Установка метода: перед выполнением класс <%1> имя процедуры <%2>", КлассРеализации, ИмяПроцедуры);
221+
222+
Если НЕ ПроверитьМетодПередВыполнениемКоманды(КлассРеализации, ИмяПроцедуры) Тогда
223+
Лог.Отладка(" >> метод %2 у класс <%1> найден", КлассРеализации, ИмяПроцедуры);
224+
207225
ДействиеПередВыполнением = Делегаты.Создать(КлассРеализации, ИмяПроцедуры);
208226

209227
ИначеЕсли ДействиеПередВыполнением = Неопределено Тогда
210228

229+
Лог.Отладка("Установлен метод перед выполнением в текущий класс");
211230
ДействиеПередВыполнением = Делегаты.Создать(ЭтотОбъект, ИмяПроцедуры);
212-
213231
КонецЕсли;
214232

215233
КонецПроцедуры
216234

217-
Процедура УстановитьДействиеПослеВыполнения(КлассРеализации, ИмяПроцедуры = "ПослеВыполнениемКоманды") Экспорт
235+
Процедура УстановитьДействиеПослеВыполнения(КлассРеализации, ИмяПроцедуры = "ПослеВыполненияКоманды") Экспорт
218236

219-
Если ПроверитьМетодПослеВыполнениемКоманды(КлассРеализации) Тогда
237+
Лог.Отладка("Установка метода: после выполнением класс <%1> имя процедуры <%2>", КлассРеализации, ИмяПроцедуры);
220238

239+
Если НЕ ПроверитьМетодПослеВыполнениемКоманды(КлассРеализации, ИмяПроцедуры) Тогда
240+
241+
Лог.Отладка(" >> метод %2 у класс <%1> найден", КлассРеализации, ИмяПроцедуры);
242+
221243
ДействиеПослеВыполнения = Делегаты.Создать(КлассРеализации, ИмяПроцедуры);
222244

223-
ИначеЕсли ДействиеПередВыполнением = Неопределено Тогда
245+
ИначеЕсли ДействиеПослеВыполнения = Неопределено Тогда
224246

247+
Лог.Отладка("Установлен метод после выполнением в текущий класс");
225248
ДействиеПослеВыполнения = Делегаты.Создать(ЭтотОбъект, ИмяПроцедуры);
226249

227250
КонецЕсли;
@@ -629,7 +652,7 @@
629652

630653
Функция ВыполнитьОписаниеКоманды(КлассКоманды, Подкоманда)
631654

632-
Если Не ПроверитьМетодОписаниеКоманды(КлассКоманды) Тогда
655+
Если ПроверитьМетодОписаниеКоманды(КлассКоманды) Тогда
633656
Возврат Подкоманда;
634657
КонецЕсли;
635658

@@ -644,27 +667,27 @@
644667
КонецФункции
645668

646669

647-
Функция ПроверитьМетодВыполнитьКоманду(ПроверяемыйКласс)
670+
Функция ПроверитьМетодВыполнитьКоманду(ПроверяемыйКласс, ИмяПроцедуры)
648671

649-
Возврат ПроверитьМетодКласса(ПроверяемыйКласс, "ВыполнитьКоманду", 1, Ложь);
672+
Возврат НЕ ПроверитьМетодКласса(ПроверяемыйКласс, ИмяПроцедуры , 1, Ложь);
650673

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

653-
Функция ПроверитьМетодПередВыполнениемКоманды(ПроверяемыйКласс)
676+
Функция ПроверитьМетодПередВыполнениемКоманды(ПроверяемыйКласс, ИмяПроцедуры)
654677

655-
Возврат ПроверитьМетодКласса(ПроверяемыйКласс, "ПередВыполнениемКоманды", 1, Ложь);
678+
Возврат НЕ ПроверитьМетодКласса(ПроверяемыйКласс, ИмяПроцедуры, 1, Ложь);
656679

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

659-
Функция ПроверитьМетодПослеВыполнениемКоманды(ПроверяемыйКласс)
682+
Функция ПроверитьМетодПослеВыполнениемКоманды(ПроверяемыйКласс, ИмяПроцедуры)
660683

661-
Возврат ПроверитьМетодКласса(ПроверяемыйКласс, "ПослеВыполнениемКоманды", 1, Ложь);
684+
Возврат НЕ ПроверитьМетодКласса(ПроверяемыйКласс, ИмяПроцедуры, 1, Ложь);
662685

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

665688
Функция ПроверитьМетодОписаниеКоманды(ПроверяемыйКласс)
666689

667-
Возврат ПроверитьМетодКласса(ПроверяемыйКласс, "ОписаниеКоманды", 1, Ложь);
690+
Возврат НЕ ПроверитьМетодКласса(ПроверяемыйКласс, "ОписаниеКоманды", 1, Ложь);
668691

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

@@ -694,22 +717,24 @@
694717
Знач ТребуемоеКоличествоПараметров = 0,
695718
Знач ЭтоФункция = Ложь)
696719

697-
698720
ЕстьМетод = РефлекторПроверкиКоманд.МетодСуществует(ПроверяемыйКласс, ИмяМетода);
699-
721+
Лог.Отладка("Проверяемый метод <%1> найден: %2", ИмяМетода, ЕстьМетод);
700722
Если Не ЕстьМетод Тогда
701723
Возврат Ложь;
702724
КонецЕсли;
703725

704726
ТаблицаМетодов = РефлекторПроверкиКоманд.ПолучитьТаблицуМетодов(ПроверяемыйКласс);
727+
705728
СтрокаМетода = ТаблицаМетодов.Найти(ИмяМетода, "Имя");
729+
Лог.Отладка("Поиск строки в таблице методов класса <%1> найдена: %2, общее количество методов класса: %3", ПроверяемыйКласс, НЕ СтрокаМетода = Неопределено, ТаблицаМетодов.Количество());
706730
Если СтрокаМетода = Неопределено Тогда
707731
Возврат Ложь;
708732
КонецЕсли;
709733

710734
ПроверкаНаФункцию = ЭтоФункция = СтрокаМетода.ЭтоФункция;
711735
ПроверкаНаКоличествоПараметров = ТребуемоеКоличествоПараметров = СтрокаМетода.КоличествоПараметров;
712-
736+
737+
Лог.Отладка("Проверяемый метод <%1> корректен: %2", ИмяМетода, ПроверкаНаФункцию И ПроверкаНаКоличествоПараметров);
713738
Возврат ПроверкаНаФункцию
714739
И ПроверкаНаКоличествоПараметров;
715740

src/core/Классы/КонсольноеПриложение.os

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,16 @@
1111

1212
Перем ТипОпцииКоманды;
1313

14-
Процедура ПриСозданииОбъекта(Знач Наименование, Знач Описание)
14+
Процедура ПриСозданииОбъекта(Знач Наименование, Знач Описание, Знач КлассРеализацииОсновныйКоманды = Неопределено)
1515

1616
НаименованиеПриложения = Наименование;
1717
ОписаниеПриложения = Описание;
18-
Команда = Новый КомандаПриложения(Наименование, Описание, ЭтотОбъект, ЭтотОбъект);
18+
19+
Если КлассРеализацииОсновныйКоманды = Неопределено Тогда
20+
КлассРеализацииОсновныйКоманды = ЭтотОбъект;
21+
КонецЕсли;
22+
23+
Команда = Новый КомандаПриложения(Наименование, Описание, КлассРеализацииОсновныйКоманды, ЭтотОбъект);
1924

2025
ТипОпцииКоманды = Новый Структура;
2126
ТипОпцииКоманды.Вставить("Опция", "Опция");
@@ -65,6 +70,14 @@
6570

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

73+
Процедура ВыполнитьКоманду(Знач Команда) Экспорт
74+
75+
Сообщить("Не корректное использование"+ Символы.ПС);
76+
Команда.ВывестиСправку();
77+
ЗавершитьРаботу(1);
78+
79+
КонецПроцедуры
80+
6881
Функция Аргумент(Имя, Значение = "", Описание = "") Экспорт
6982

7083
НовыйАргумент = Новый АргументКоманды(Имя, Значение, Описание);

0 commit comments

Comments
 (0)