-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathtest8.os
48 lines (38 loc) · 2.53 KB
/
test8.os
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Пример автоматического исправления ошибок.
// Данный скрипт расставляет пропущенные точки с запятой в исходниках в указанной папке.
// Плюс заменяет ключевые слова, написанные не по канону (титульный регистр).
#Использовать osparser
#Использовать "./plugins"
Если АргументыКоманднойСтроки.Количество() = 0 Тогда
ВызватьИсключение "Укажите в качестве параметра путь к папке с модулями bsl";
КонецЕсли;
ПутьКМодулям = АргументыКоманднойСтроки[0];
Файлы = НайтиФайлы(ПутьКМодулям, "*.bsl", Истина);
Парсер = Новый ПарсерВстроенногоЯзыка;
Плагины = Новый Массив;
Плагины.Добавить(Новый РасстановкаПропущенныхТочекСЗапятой);
Плагины.Добавить(Новый ЗаменаНеканоничныхКлючевыхСлов);
ЧтениеТекста = Новый ЧтениеТекста;
Отчет = Новый Массив;
Количество = 0;
Для Каждого Файл Из Файлы Цикл
Если Файл.ЭтоФайл() Тогда
ЧтениеТекста.Открыть(Файл.ПолноеИмя, "UTF-8");
Исходник = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
Попытка
Парсер.Пуск(Исходник, Плагины);
ИсправленныйИсходник = Парсер.ВыполнитьЗамены();
Если ИсправленныйИсходник <> Неопределено Тогда
ЗаписьТекста = Новый ЗаписьТекста;
ЗаписьТекста.Открыть(Файл.ПолноеИмя, "UTF-8");
ЗаписьТекста.Записать(ИсправленныйИсходник);
ЗаписьТекста.Закрыть();
Количество = Количество + 1;
КонецЕсли;
Исключение
Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЕсли;
КонецЦикла;
Сообщить(СтрШаблон("Исправлено %1 исходников", Количество));