ReaScripts (скрипты для Reaper) - обсуждение (1 онлайн

PianoIst

Well-Known Member
19 Май 2010
4.108
4.163
113
29
Kirchberg, kreis Zwickau
soundcloud.com
@Trasher, Теперь понятно, интересует метапрограммирование.
Ну… Зависит от среды, в которой запускается. Легче всего реализовать как плагин для редактора кода. Как это сделано, допустим, для KSP.

Там плагин офигеть какой здоровый и развёрнутый. Но в целом, в вашем случае, можно обойтись буквально ~30 строчками кода:
  1. Получаем из буфера редактора текст (В SublimeText это какая-то из вариаций API view.lines())
  2. Сравниваем через regex нужный вам паттерн
  3. Если надо заменить макрос на несколько строк, то пушим в вывод наши строки
  4. если regex не находит соответствие ‒ пушим оригинальную строку
  5. Пушим строки обратно в буфер редактора. Или в новый файл, как вам удобно.
К сожалению, не могу предоставить релевантный пример. Но, в общем и целом, без всякой подготовки в SublimeText можно написать свои макросы за вечер.

P.S. Тут надо понимать, что прямо совсем кошерно всё равно не получится, потому что в том же JSFX препроцессора нет. Но в целом, никто не мешает в билд добавить свой препроцессор, если и так там что-то экспандится.
 
  • Like
Реакции: Trasher

Trasher

Well-Known Member
12 Янв 2013
641
450
63
@PianoIst,все правильно мета программирование. Препроцессор появился в jsfx с 6.82(по-моему) Вот как раз для него и надо. Сам скрипт на семейках/cmake.(выбрал из-за открытости кода и кросс платформы, но минусом подтянул избыточность/многословность синтаксиса семеек и безобразное поведение при работе со строковыми типами из-за ";" ). Просто принт сишный(вроде просто на первый взгляд, для разбора) возникают проблемы из-за переменного количества аргументов и разнообразия вариантов оформления аргумента параметра строки форматирования. Да.... все-таки, придётся регулярки использовать(как они меня бесят) . Спасибо за наводку.
 
  • Like
Реакции: PianoIst

Сейчас онлайн (Пользователей: 0, Гостей: 1)