#Использовать 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" Тогда УбратьЛишниеПробелыСправа(); Иначе Обмен.Предупреждение("Работа скрипта прекращена. Не определено действие: " + ВариантОбработки); КонецЕсли; КонецЕсли; КонецПроцедуры