1
0
mirror of https://github.com/ret-Phoenix/SmartConfigurator.git synced 2026-06-16 00:57:28 +02:00
Files

154 lines
6.3 KiB
Plaintext
Raw Permalink Normal View History

#Использовать logging
2017-06-15 00:56:15 +03:00
Перем Обмен;
Перем _Лог;
2017-06-15 00:56:15 +03:00
2017-08-22 17:25:29 +03:00
////////////////////////////////////////////////////////////
// Вспомогательные методы
Функция ПолучитьТекст()
Возврат Обмен.ПолучитьВыделенныйТекст();
2017-08-22 17:25:29 +03:00
КонецФункции // ПолучитьТекст()
Процедура УстановитьТекст(Результат)
Обмен.УстановитьТекстВВыделение(Результат);
2017-08-22 17:25:29 +03:00
КонецПроцедуры
Функция УбратьПробелыСправа(Данные)
2019-10-03 11:56:21 +03:00
Регулярка = Новый РегулярноеВыражение("[ \t]+\r*\n");
2017-06-15 00:56:15 +03:00
Возврат Регулярка.Заменить(Данные, Символы.ПС);
КонецФункции
2017-08-22 17:25:29 +03:00
Функция ВыравнитьПоЗначению(ЗначениеВыравнивания)
2017-06-15 00:56:15 +03:00
Данные = "";
МаксПозицияЗначенияВыравнивания = 0;
2017-06-15 00:56:15 +03:00
МассивСтрок = Новый Массив;
2017-08-22 17:25:29 +03:00
Текст = ПолучитьТекст();
2017-06-15 00:56:15 +03:00
СтрокиМодуля = СтрРазделить(Текст, Символы.ПС, Истина);
2017-08-22 17:25:29 +03:00
// Получаем макс.позицию значения выравнивания
2017-08-22 17:25:29 +03:00
Для Каждого Стр Из СтрокиМодуля Цикл
2017-08-22 17:25:29 +03:00
Если Лев(СокрЛП(Стр), 2) = "//" Тогда
2017-06-15 00:56:15 +03:00
МассивСтрок.Добавить(Стр);
2017-06-15 00:56:15 +03:00
Иначе
2017-08-22 17:25:29 +03:00
ТекПозиция = Найти(Стр, ЗначениеВыравнивания);
2017-08-22 17:25:29 +03:00
Подстрока = Лев(Стр, ТекПозиция - 1);
ТекПозиция = СтрДлина(СокрП(Подстрока));
МаксПозицияЗначенияВыравнивания = Макс(МаксПозицияЗначенияВыравнивания, ТекПозиция);
2017-06-15 00:56:15 +03:00
МассивСтрок.Добавить(Стр);
2019-10-03 11:56:21 +03:00
КонецЕсли;
2017-06-15 00:56:15 +03:00
КонецЦикла;
// выравниваем по значению
2019-10-03 11:56:21 +03:00
Для Каждого Стр Из МассивСтрок Цикл
2017-08-22 17:25:29 +03:00
2017-06-15 00:56:15 +03:00
Если СокрЛП(Стр) = "" Тогда
2017-06-15 00:56:15 +03:00
Данные = Данные + ?(Данные = "", "", Символы.ПС);
Продолжить;
2017-06-15 00:56:15 +03:00
КонецЕсли;
2017-08-22 17:25:29 +03:00
ТекПозиция = Найти(Стр, ЗначениеВыравнивания);
Если ТекПозиция > 0 Тогда
ПодстрокаЛевая = Лев(Стр, ТекПозиция - 1);
ПодстрокаЛевая = ДополнитьСтрокуПробелами(СокрП(ПодстрокаЛевая), МаксПозицияЗначенияВыравнивания);
ПодстрокаПравая = СокрЛП(Сред(Стр, ТекПозиция + 1));
НоваяСтр = ПодстрокаЛевая + " " + ЗначениеВыравнивания + " " + ПодстрокаПравая;
Данные = Данные + ?(Данные = "", "", Символы.ПС) + НоваяСтр;
Иначе
Данные = Данные + ?(Данные = "", "", Символы.ПС) + Стр;
КонецЕсли;
2017-08-22 17:25:29 +03:00
КонецЦикла;
2017-08-22 17:25:29 +03:00
Возврат (УбратьПробелыСправа(Данные));
КонецФункции
Функция ДополнитьСтрокуПробелами(Приемник, НужнаяДлинаСтроки)
ДлинаСтроки = СтрДлина(Приемник);
Разница = НужнаяДлинаСтроки - ДлинаСтроки - 1;
Пробелы = "";
Для А = 0 По Разница Цикл
Пробелы = Пробелы + " ";
КонецЦикла;
НоваяСтрока = Приемник + Пробелы;
Возврат НоваяСтрока;
2017-06-15 00:56:15 +03:00
КонецФункции
2017-08-22 17:25:29 +03:00
// Вспомогательные методы
////////////////////////////////////////////////////////////
2017-06-15 00:56:15 +03:00
2017-08-22 17:25:29 +03:00
////////////////////////////////////////////////////////////
// Обработчики данных
Процедура УбратьЛишниеПробелыСправа() Экспорт
Данные = ПолучитьТекст();
УстановитьТекст(УбратьПробелыСправа(Данные));
КонецПроцедуры
Процедура ВыравнитьПоВведеномуСимволу() Экспорт
2017-06-15 00:56:15 +03:00
Стр = Обмен.ВвестиЗначение("");
Если СокрЛП(Стр) = "" Тогда
2017-08-22 17:25:29 +03:00
Возврат;
2017-06-15 00:56:15 +03:00
КонецЕсли;
2017-08-22 17:25:29 +03:00
УстановитьТекст(ВыравнитьПоЗначению(Стр));
КонецПроцедуры
2017-06-15 00:56:15 +03:00
2017-08-22 17:25:29 +03:00
Процедура ВыравнитьПоЗапятой() Экспорт
УстановитьТекст(ВыравнитьПоЗначению(","));
КонецПроцедуры
2017-06-15 00:56:15 +03:00
2017-08-22 17:25:29 +03:00
Процедура ВыравнитьПоРавно() Экспорт
УстановитьТекст(ВыравнитьПоЗначению("="));
КонецПроцедуры
// Обработчики данных
////////////////////////////////////////////////////////////
2017-06-15 00:56:15 +03:00
2017-10-20 18:02:08 +03:00
Процедура ПриСозданииОбъекта()
Обмен = ЗагрузитьСценарий("core/Обмен.os");
2017-10-20 18:02:08 +03:00
_Лог = Новый ЛогированиеВФайл("tmp/log.log");
Параметры = АргументыКоманднойСтроки;
2017-06-15 00:56:15 +03:00
Если Параметры.Количество() > 0 Тогда
ВариантОбработки = Параметры[0];
Если ВариантОбработки = "align-equal-sign" Тогда
2017-08-22 17:25:29 +03:00
ВыравнитьПоРавно();
2017-06-15 00:56:15 +03:00
ИначеЕсли ВариантОбработки = "align-first-comma" Тогда
2017-08-22 17:25:29 +03:00
ВыравнитьПоЗапятой();
2017-06-15 00:56:15 +03:00
ИначеЕсли ВариантОбработки = "align-user-symbol" Тогда
2017-08-22 17:25:29 +03:00
ВыравнитьПоВведеномуСимволу();
2017-06-15 00:56:15 +03:00
ИначеЕсли ВариантОбработки = "rtrim" Тогда
2017-08-22 17:25:29 +03:00
УбратьЛишниеПробелыСправа();
2019-10-03 11:56:21 +03:00
Иначе
Обмен.Предупреждение("Работа скрипта прекращена. Не определено действие: " + ВариантОбработки);
2017-06-15 00:56:15 +03:00
КонецЕсли;
2017-08-22 17:25:29 +03:00
2017-06-15 00:56:15 +03:00
КонецЕсли;
2017-08-22 17:25:29 +03:00
2017-10-20 18:02:08 +03:00
КонецПроцедуры