Было очевидно, что лезть надо в html.
За вставку html-текста в doxygen отвечают скобки из команд \htmlonly \endhtmlonly. Между ними можно вставить html-скрипт спойлера, а затем заключить нужный текст в специфичные теги.
Нагуглил такой вариант скрипта:
<script type="text/javascript">
<!--
// настройки
var collapse_section_id = "quotes"; // ID раздела с элементами
var title_tag = "H3"; // имя тега для заголовков
var item_tag = "BLOCKQUOTE"; // имя тега для текста
var text_decotation = "underline" // подчеркивание заголовков, если не нужно -- ставим "none"
var highlight_text = "« "; // загогулина перед заголовком при открытом тексте (нельзя использовать entities!)
var normal_text = "» "; // загогулина перед заголовком при скрытом тексте (нельзя использовать entities!)
// главная ф-ция
function toggle(e){
var el = window.event ? window.event.srcElement : e.currentTarget;
var collapse_item = el.nextSibling;
while (collapse_item.nodeType != 1) collapse_item = collapse_item.nextSibling; // workaround (whitespace)!
curr_shown = collapse_item.style.display == "block";
collapse_item.style.display = (curr_shown) ? "none" : "block";
var title_text = el.firstChild;
title_text.nodeValue = (curr_shown) ? title_text.nodeValue.replace(highlight_text, normal_text) : title_text.nodeValue.replace(normal_text, highlight_text);
}
// ф-ция инициализации
function init(){
if (document.getElementById && document.createTextNode){
var collapse_section = document.getElementById(collapse_section_id);
var collapse_title = collapse_item = null;
for (var i = 0; ((collapse_title = collapse_section.getElementsByTagName(title_tag).item(i)) && (collapse_item = collapse_section.getElementsByTagName(item_tag).item(i))); i++){
collapse_title.style.textDecoration = text_decotation;
collapse_title.style.cursor = window.event ? "hand" : "pointer";
if (collapse_title.addEventListener) collapse_title.addEventListener("click", toggle, false);
else if (collapse_title.attachEvent) collapse_title.attachEvent("onclick", toggle);
collapse_title.firstChild.nodeValue = normal_text + collapse_title.firstChild.nodeValue;
collapse_item.style.display = "none";
}
}
}
// запускаем процесс по onload'у
var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
if (root){
if (root.addEventListener) root.addEventListener("load", init, false);
else if (root.attachEvent) root.attachEvent("onload", init);
}
//-->
</script>
и его использование:
<div id="quotes" class="example">
<h3 style="color: #1b4f88">Аристотель</h3>
<blockquote>Разумный гонится не за тем, что приятно, а за тем, что избавляет от неприятностей.</blockquote>
<h3 style="color: #1b4f88">Ж. Ж. Руссо</h3>
<blockquote>Чтобы написать любовное письмо, нужно начинать, не зная, что собираешься сказать, и заканчивать, не зная, о чём написал.</blockquote>
Скрипт <script> ... </script> и служебные теги <div ... > <h3 ... > <blockquote> вставляются между \htmlonly \endhtmlonly .
В итоге набросал такую схему:
/**
\htmlonly<script type="text/javascript"><!--
// настройки
var collapse_section_id = "quotes"; // ID раздела с элементамиvar title_tag = "H3"; // имя тега для заголовковvar item_tag = "BLOCKQUOTE"; // имя тега для текстаvar text_decotation = "underline" // подчеркивание заголовков, если не нужно -- ставим "none"var highlight_text = "« "; // загогулина перед заголовком при открытом тексте (нельзя использовать entities!)var normal_text = "» "; // загогулина перед заголовком при скрытом тексте (нельзя использовать entities!)
// главная ф-ция
function toggle(e){var el = window.event ? window.event.srcElement : e.currentTarget;var collapse_item = el.nextSibling;while (collapse_item.nodeType != 1) collapse_item = collapse_item.nextSibling; // workaround (whitespace)!curr_shown = collapse_item.style.display == "block";collapse_item.style.display = (curr_shown) ? "none" : "block";var title_text = el.firstChild;title_text.nodeValue = (curr_shown) ? title_text.nodeValue.replace(highlight_text, normal_text) : title_text.nodeValue.replace(normal_text, highlight_text);}
// ф-ция инициализации
function init(){if (document.getElementById && document.createTextNode){var collapse_section = document.getElementById(collapse_section_id);var collapse_title = collapse_item = null;for (var i = 0; ((collapse_title = collapse_section.getElementsByTagName(title_tag).item(i)) && (collapse_item = collapse_section.getElementsByTagName(item_tag).item(i))); i++){collapse_title.style.textDecoration = text_decotation;collapse_title.style.cursor = window.event ? "hand" : "pointer";if (collapse_title.addEventListener) collapse_title.addEventListener("click", toggle, false);else if (collapse_title.attachEvent) collapse_title.attachEvent("onclick", toggle);collapse_title.firstChild.nodeValue = normal_text + collapse_title.firstChild.nodeValue;collapse_item.style.display = "none";}}}
// запускаем процесс по onload'у
var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;if (root){if (root.addEventListener) root.addEventListener("load", init, false);else if (root.attachEvent) root.attachEvent("onload", init);}//--></script>\endhtmlonly
@page something_desc О чём-то@section what_is_something Что такое что-тоДостоверно известно, что "где-то кто-то для кого-то из чего-то сделал что-то". Что-то -- материально :).
\htmlonly <div id='quotes' class='spoiler_for_something'><H3>Подробнее</H3><BLOCKQUOTE>\endhtmlonlyИ здесь какой-нибудь окончательно задуривающий код:\codeif( ){;}\endcode\htmlonly</BLOCKQUOTE></div>\endhtmlonly
@section links Ссылки
*/
Результатом доволен )
P.S. блог пишу впервые, буду рад, если кто из знающих подскажет, как этот самый "результат" в виде html здесь разместить.
Комментариев нет:
Отправить комментарий