-
Notifications
You must be signed in to change notification settings - Fork 0
/
PrettifyString.os
100 lines (68 loc) · 4.17 KB
/
PrettifyString.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//@script_name PrettifyString
//@script_display_name Улучшить внешний вид текущей строки
//@script_description Добавляет пробелы вокруг знаков арифметических операций и равенства, добавляет пробел после запятой, удаляет пробелы и табуляции в конце строки.
//@script_author Aleksei Adamov
//@script_developer_url https://github.com/AlekseiAdamov
//@script_url https://github.com/AlekseiAdamov/turboconf-scripts/PrettifyString.os
//@script_section Рефакторинг
//@script_hotkey Alt+E
//@retain_clipboard 1
//@enterprise_mode 1
//@hide_actions 1
//@script_version 1
//@turbomenu 1
//@turbobutton 1
// Вызывающий объект.
Перем ТурбоКонф;
Процедура УлучшитьВнешнийВидТекущейСтроки()
ТекстТекущейСтроки = ТекстТекущейСтроки();
ИсправленныйТекст = ИсправленныйТекст(ТекстТекущейСтроки);
ЗаменитьТекущуюСтроку(ИсправленныйТекст);
КонецПроцедуры
Функция ТекстТекущейСтроки()
ВыделитьТекущуюСтроку();
// В эти переменные считываются данные.
ВыделенныйТекст = "";
Позиция = 0;
// BSLLS:UnusedLocalVariable-off
Текст = ТурбоКонф.ПолучитьТекстМодуля(ВыделенныйТекст, Позиция);
Возврат ВыделенныйТекст;
КонецФункции
Функция ИсправленныйТекст(Знач ТекстДляИсправления)
ИсправленныйТекст = ТекстДляИсправления;
СимволыДляПоиска = СимволыДляПоиска();
Для Каждого Символ Из СимволыДляПоиска Цикл
Подставить = СтрШаблон(" %1 ", Символ);
Заменить = СтрШаблон(" %1 ", Символ);
ИсправленныйТекст = СтрЗаменить(ИсправленныйТекст, Символ, Подставить);
ИсправленныйТекст = СтрЗаменить(ИсправленныйТекст, Заменить, Подставить);
КонецЦикла;
ИсправленныйТекст = СтрЗаменить(ИсправленныйТекст, ",", ", ");
ИсправленныйТекст = СтрЗаменить(ИсправленныйТекст, ", ", ", ");
Возврат СокрП(ИсправленныйТекст);
КонецФункции
Функция СимволыДляПоиска()
СимволыДляПоиска = Новый Массив;
СимволыДляПоиска.Добавить("+");
СимволыДляПоиска.Добавить("-");
СимволыДляПоиска.Добавить("*");
СимволыДляПоиска.Добавить("/");
СимволыДляПоиска.Добавить("=");
Возврат СимволыДляПоиска;
КонецФункции
Процедура ЗаменитьТекущуюСтроку(Знач ИсправленныйТекст)
ВыделитьТекущуюСтроку();
// Удалять и ждать нужно обязательно, иначе возможна ситуация,
// когда текст вставится в конец выделения без замены.
ТурбоКонф.Клавиша(Клавиши.Delete);
ТурбоКонф.Ждать(100);
ТурбоКонф.ВставитьТекст(ИсправленныйТекст);
КонецПроцедуры
Процедура ВыделитьТекущуюСтроку()
// Переходим в начало строки.
ТурбоКонф.Клавиша(Клавиши.Home);
// Выделяем строку до конца.
ТурбоКонф.ШифтКлавиша(Клавиши.End);
КонецПроцедуры
ТурбоКонф = Новый ТурбоКонф;
УлучшитьВнешнийВидТекущейСтроки();