PlantUML: ifdef и JQuery

Для отрисовки диаграмм последовательности ( ака call flow ) постоянно пользуюсь утилитой plantuml. Пользуюсь и пользуюсь, на сайт не заглядываю, тем более что в офисе оно встроено в корпоративную wiki Atlassian Confluence. Так вот, забыл я какую-то особенность синтаксиса, полез на сайт, подсмотреть, а там... Оказалось, что с момента моего последнего посещения библиотека обросла множеством замечательных возможностей:




  • Возможность написания однострочных и многострочных макросов. Позволяет определить, например функции для отрисовки каждого из задействованных протоколов своим цветом и стилем. Кроме того, использование  макросов позволяет избавиться от слеждения за форматом стрелок, и писать диаграмму в чистом сигнально-протокольном псевдокоде:

    @startuml
    !define SIP(a,b,c) a-[#red]->b: SIP c
    
    participant UA as UA
    participant SSW as SSW
    
    autonumber
    
    SIP(UA, SSW, Invite From: A To: B)
    SIP(SSW, UA, ACK)
    SIP(SSW, UA, 180 Ringing)
    SIP(SSW, UA, 200 OK + SDP)
    @enduml
    
  • Описание UML-диаграмм в HTML-коде: JQuery-плагин позволяет использовать конструкции вида 
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery_plantuml.js"></script>
<img uml="
A->B: Запрос
B->A: Ответ
">
  • Поддержка констант, переменных среды и использование их в диаграммах
  • Условная отрисовка с использованием директив !ifdef и !endif
  • Включение дополнительных файлов ( include )
Теперь придётся половину архива проектов перерисовывать...

Ссылки по теме: