You've already forked SmartConfigurator
mirror of
https://github.com/ret-Phoenix/SmartConfigurator.git
synced 2026-06-11 22:31:02 +02:00
154 lines
6.3 KiB
Plaintext
154 lines
6.3 KiB
Plaintext
#Использовать logging
|
|
|
|
Перем Обмен;
|
|
Перем _Лог;
|
|
|
|
////////////////////////////////////////////////////////////
|
|
// Вспомогательные методы
|
|
|
|
Функция ПолучитьТекст()
|
|
Возврат Обмен.ПолучитьВыделенныйТекст();
|
|
КонецФункции // ПолучитьТекст()
|
|
|
|
Процедура УстановитьТекст(Результат)
|
|
Обмен.УстановитьТекстВВыделение(Результат);
|
|
КонецПроцедуры
|
|
|
|
Функция УбратьПробелыСправа(Данные)
|
|
Регулярка = Новый РегулярноеВыражение("[ \t]+\r*\n");
|
|
Возврат Регулярка.Заменить(Данные, Символы.ПС);
|
|
КонецФункции
|
|
|
|
Функция ВыравнитьПоЗначению(ЗначениеВыравнивания)
|
|
|
|
Данные = "";
|
|
МаксПозицияЗначенияВыравнивания = 0;
|
|
МассивСтрок = Новый Массив;
|
|
|
|
Текст = ПолучитьТекст();
|
|
СтрокиМодуля = СтрРазделить(Текст, Символы.ПС, Истина);
|
|
|
|
// Получаем макс.позицию значения выравнивания
|
|
Для Каждого Стр Из СтрокиМодуля Цикл
|
|
|
|
Если Лев(СокрЛП(Стр), 2) = "//" Тогда
|
|
|
|
МассивСтрок.Добавить(Стр);
|
|
|
|
Иначе
|
|
|
|
ТекПозиция = Найти(Стр, ЗначениеВыравнивания);
|
|
|
|
Подстрока = Лев(Стр, ТекПозиция - 1);
|
|
ТекПозиция = СтрДлина(СокрП(Подстрока));
|
|
|
|
МаксПозицияЗначенияВыравнивания = Макс(МаксПозицияЗначенияВыравнивания, ТекПозиция);
|
|
|
|
МассивСтрок.Добавить(Стр);
|
|
|
|
КонецЕсли;
|
|
|
|
КонецЦикла;
|
|
|
|
// выравниваем по значению
|
|
Для Каждого Стр Из МассивСтрок Цикл
|
|
|
|
Если СокрЛП(Стр) = "" Тогда
|
|
|
|
Данные = Данные + ?(Данные = "", "", Символы.ПС);
|
|
Продолжить;
|
|
|
|
КонецЕсли;
|
|
|
|
ТекПозиция = Найти(Стр, ЗначениеВыравнивания);
|
|
Если ТекПозиция > 0 Тогда
|
|
|
|
ПодстрокаЛевая = Лев(Стр, ТекПозиция - 1);
|
|
ПодстрокаЛевая = ДополнитьСтрокуПробелами(СокрП(ПодстрокаЛевая), МаксПозицияЗначенияВыравнивания);
|
|
ПодстрокаПравая = СокрЛП(Сред(Стр, ТекПозиция + 1));
|
|
|
|
НоваяСтр = ПодстрокаЛевая + " " + ЗначениеВыравнивания + " " + ПодстрокаПравая;
|
|
|
|
Данные = Данные + ?(Данные = "", "", Символы.ПС) + НоваяСтр;
|
|
|
|
Иначе
|
|
|
|
Данные = Данные + ?(Данные = "", "", Символы.ПС) + Стр;
|
|
|
|
КонецЕсли;
|
|
|
|
КонецЦикла;
|
|
|
|
Возврат (УбратьПробелыСправа(Данные));
|
|
|
|
КонецФункции
|
|
|
|
Функция ДополнитьСтрокуПробелами(Приемник, НужнаяДлинаСтроки)
|
|
|
|
ДлинаСтроки = СтрДлина(Приемник);
|
|
Разница = НужнаяДлинаСтроки - ДлинаСтроки - 1;
|
|
Пробелы = "";
|
|
Для А = 0 По Разница Цикл
|
|
Пробелы = Пробелы + " ";
|
|
КонецЦикла;
|
|
НоваяСтрока = Приемник + Пробелы;
|
|
|
|
Возврат НоваяСтрока;
|
|
|
|
КонецФункции
|
|
|
|
// Вспомогательные методы
|
|
////////////////////////////////////////////////////////////
|
|
|
|
|
|
////////////////////////////////////////////////////////////
|
|
// Обработчики данных
|
|
|
|
Процедура УбратьЛишниеПробелыСправа() Экспорт
|
|
Данные = ПолучитьТекст();
|
|
УстановитьТекст(УбратьПробелыСправа(Данные));
|
|
КонецПроцедуры
|
|
|
|
Процедура ВыравнитьПоВведеномуСимволу() Экспорт
|
|
Стр = Обмен.ВвестиЗначение("");
|
|
Если СокрЛП(Стр) = "" Тогда
|
|
Возврат;
|
|
КонецЕсли;
|
|
УстановитьТекст(ВыравнитьПоЗначению(Стр));
|
|
КонецПроцедуры
|
|
|
|
Процедура ВыравнитьПоЗапятой() Экспорт
|
|
УстановитьТекст(ВыравнитьПоЗначению(","));
|
|
КонецПроцедуры
|
|
|
|
Процедура ВыравнитьПоРавно() Экспорт
|
|
УстановитьТекст(ВыравнитьПоЗначению("="));
|
|
КонецПроцедуры
|
|
|
|
// Обработчики данных
|
|
////////////////////////////////////////////////////////////
|
|
|
|
Процедура ПриСозданииОбъекта()
|
|
|
|
Обмен = ЗагрузитьСценарий("core/Обмен.os");
|
|
_Лог = Новый ЛогированиеВФайл("tmp/log.log");
|
|
|
|
Параметры = АргументыКоманднойСтроки;
|
|
Если Параметры.Количество() > 0 Тогда
|
|
|
|
ВариантОбработки = Параметры[0];
|
|
Если ВариантОбработки = "align-equal-sign" Тогда
|
|
ВыравнитьПоРавно();
|
|
ИначеЕсли ВариантОбработки = "align-first-comma" Тогда
|
|
ВыравнитьПоЗапятой();
|
|
ИначеЕсли ВариантОбработки = "align-user-symbol" Тогда
|
|
ВыравнитьПоВведеномуСимволу();
|
|
ИначеЕсли ВариантОбработки = "rtrim" Тогда
|
|
УбратьЛишниеПробелыСправа();
|
|
Иначе
|
|
Обмен.Предупреждение("Работа скрипта прекращена. Не определено действие: " + ВариантОбработки);
|
|
КонецЕсли;
|
|
|
|
КонецЕсли;
|
|
|
|
КонецПроцедуры |