OberonCore https://forum.oberoncore.ru/ |
|
Пример работы с документом Блэкбокса https://forum.oberoncore.ru/viewtopic.php?f=35&t=6800 |
Страница 1 из 1 |
Автор: | Иван Денисов [ Воскресенье, 29 Август, 2021 20:10 ] |
Заголовок сообщения: | Пример работы с документом Блэкбокса |
Так как цвет часто используется для разных пометок, то - это реальный инструмент. В самом Блэкбоксе нет команды для перекраски всех букв из одного цвета в другой. А у меня взникла такая производственная необходимость при работе с исходниками. Написал небольшой модуль из одной процедуры для перекраски и решил поделиться. Код: MODULE ToolRecolor; IMPORT DevCommanders, TextMappers, TextModels, Ports, Stores, Models; PROCEDURE Recolor*; VAR s: TextMappers.Scanner; ch: CHAR; script: Stores.Operation; colorToReplace, newColor: Ports.Color; BEGIN s.ConnectTo(DevCommanders.par.text); s.SetPos(DevCommanders.par.beg); s.rider.ReadChar(ch); IF ch = 0DX THEN RETURN END; WHILE ~ s.rider.eot & (ch = " ") DO s.rider.ReadChar(ch); IF ch = 0DX THEN RETURN END; END; colorToReplace := s.rider.attr.color; WHILE ~ s.rider.eot & (ch # " ") & (ch # 0DX) DO s.rider.ReadChar(ch); IF ch = 0DX THEN RETURN END; END; WHILE ~ s.rider.eot & (ch = " ") & (ch # 0DX) DO s.rider.ReadChar(ch); IF ch = 0DX THEN RETURN END; END; newColor := s.rider.attr.color; WHILE ~ s.rider.eot & (ch # 0DX) DO s.rider.ReadChar(ch); END; Models.BeginScript(DevCommanders.par.text, "Reaplace color", script); WHILE ~ s.rider.eot DO s.rider.ReadChar(ch); IF (s.rider # NIL) & (s.rider.attr # NIL) THEN IF s.rider.attr.color = colorToReplace THEN DevCommanders.par.text.SetAttr(s.rider.Pos()-1, s.rider.Pos(), TextModels.NewColor(s.rider.attr, newColor)) END END END; Models.EndScript(DevCommanders.par.text, script) END Recolor; END ToolRecolor. Цвета кодируются цветом слов после коммандера в одной строке, и команда применяется к тексту после этой строки. Вложение: Снимок экрана от 2021-08-30 00-09-37.png [ 2.5 КБ | Просмотров: 24440 ] |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |