Придя сюда, используя поисковую систему по моему выбору, я просто хочу оставить здесь примечание, что нет абсолютной необходимости изменять какой-либо источник doxygen.
Когда был задан этот вопрос, вероятно, не было возможности встроить чистый html с помощью тега htmlonly
, но с учетом этого можно создавать складные разделы-контейнеры, злоупотребляя функцией с именем toggleVisibility
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
который в настоящее время доступен каждый раз, когда документация создается в файле с именем dynsections.js, расположенном в корне документации.
Что касается этого кода, вы узнаете условия, позволяющие создавать складной код из своей собственной документации с использованием Javascript, избегая внутренних ошибок выполнения в этой функции и предотвращая неинтерпретацию дальнейшего кода javascript.
- элемент dom с уникальным идентификатором
id
- другой инкапсулированный элемент dom с уникальным идентификатором
id
-summary
- другой инкапсулированный элемент dom с уникальным идентификатором
id
-content
- другой инкапсулированный элемент dom с уникальным идентификатором
id
-trigger
- элемент
id
-trigger должен содержать атрибут src
по крайней мере с 1 символом
- атрибуты
class
основных контейнеров не имеют значения
Имея в виду эти условия, можно создать следующий код.
## <a href="javascript:toggleVisibility($('#example-div'))">Fold me</a>
## <div id="example-div">
## <div id="example-div-summary"></div>
## <div id="example-div-content">
## <pre>
## foo
## bar
## </pre>
## </div>
## <div id="example-div-trigger" src="-"></div>
## </div>
## @htmlonly <script type="text/javascript">$("#example-div").ready(function() { toggleVisibility($("#example-div")); });</script> @endhtmlonly
Приведенный выше код doxygen используется для документирования кода bash с использованием bash-doxygen, поэтому он может выглядеть немного отличается от чистого кода doxygen. Первая часть, связанная с контейнерами div, уже описана с упоминанием условий, чтобы соответствовать исходному коду функции toggleVisibility
и сделать ее исполняемой без каких-либо ошибок, настраивая комментарии doxygen для наших нужд.
Здесь используется уникальный префикс идентификатора example-div
. В первой строке есть настройка гиперссылки для развертывания раздела с использованием JavaScript напрямую в сочетании с некоторым кодом jQuery.
Остался один лайнер в конце. Он содержит скрипт jQuery, который необходимо запустить, чтобы изначально свернуть определенный сегмент. Для bash-doxygen (и, возможно, других языков) блок должен быть однострочным из-за области действия блока скрипта.
Обычно содержимое между \htmlonly и \endhtmlonly вставляется как есть. Если вы хотите вставить фрагмент HTML, который имеет блочную область действия, например таблицу или список, который должен отображаться за пределами ‹p›..‹/p›, это может привести к недопустимому HTML-коду. Вы можете использовать \htmlonly[block], чтобы заставить doxygen завершить текущий абзац и перезапустить его после \endhtmlonly.
как указано в документации doxygen и в комментарии под отмеченным справа решением ответ stackoverflow на включение тегов сценария в документации doxygen.
Спасибо за чтение. Надеюсь, это поможет некоторым людям, которые приходят сюда.
person
Marc Bredt
schedule
23.06.2015