Pregunta

Estoy creando documentación interna para un proyecto de C++ usando Doxygen.Estoy haciendo que Doxygen incluya la fuente de los métodos, etc., pero esto hace que la página sea un poco difícil de escanear.Me gustaría que se comportara como rdoc y ocultara la fuente en un bloque que está colapsado de forma predeterminada.

pensé que HTML_DYNAMIC_SECTIONS Podría dejarme hacer esto, pero, por desgracia, el registro de cambios dice que esa opción solo afecta a diagramas y gráficos.

Tal vez podría hacerlo editando el LAYOUT_FILE?

De todos modos, gente inteligente, ¿cómo puedo obligar a Doxygen a generar secciones de código plegables?

¿Fue útil?

Solución

si incluye [ing] la fuente de métodos, etc., [...] hace que la página sea difícil de escanear , ¿por qué no simplemente enlazar ( SOURCE_BROWSER = YES ) en lugar de incluyendo it ( INLINE_SOURCES = YES )? esto haría que las páginas fueran más fáciles de escanear y más rápidas de cargar, y la fuente aún estaría accesible (a expensas de una carga más de la página fuente). depende de la frecuencia con la que realmente necesites acceder a la fuente, supongo.

Dicho esto, hay una forma de generar secciones de código plegables (aunque tendrá que modificar la fuente y recompilar Doxygen):

    <div class="dynheader"><div class="dynsection">
    [collapsible section]
    </div></div>
    Las
  • secciones de código incluidas están marcadas así: <div class="fragment"><pre class="fragment">...</pre></div>
  • por lo tanto, para hacer que las secciones de código incluidas sean plegables, debe

la implementación (o ir a la ruta <=> :) se deja como un ejercicio para el lector. buena suerte!

oh, y si tuviera éxito con un parche, sería genial si pudiera enviarlo a dimitri para que pueda incluirlo en una versión futura. gracias!

Otros consejos

Al venir aquí usando el motor de búsqueda de mi elección, solo quiero dejar una nota aquí de que no es absolutamente necesario modificar ninguna fuente de doxígeno.

Cuando se hizo esta pregunta probablemente no había posibilidad de incrustar html puro utilizando el htmlonly etiqueta pero con esto en mente uno es capaz de crear secciones de contenedores plegables abusando de una función llamada 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;
 }

que actualmente está disponible cada vez que se genera la documentación en un archivo llamado dynsections.js ubicado en la raíz de la documentación.

Con respecto a este código, uno conoce las condiciones para poder crear código plegable a partir de su propia documentación usando Javascript, evitando fallas de ejecución internas en esta función y evitando que más código javascript no se interprete.

  1. elemento dom con un identificador único id
  2. otro elemento dom encapsulado con identificador único id-resumen
  3. otro elemento dom encapsulado con identificador único id-contenido
  4. otro elemento dom encapsulado con identificador único id-desencadenar
  5. el id-El elemento disparador debe contener un src atributo con al menos 1 carácter
  6. el class Los atributos de los contenedores principales no importan.

Con estas condiciones en mente, se puede crear el siguiente código.

## <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

El código doxygen anterior se usa para documentar el código bash usando bash-doxigeno por lo que podría verse un poco diferente del código doxygen puro.La primera parte que involucra los contenedores div ya está descrita mencionando las condiciones para ajustarse al código fuente de la función. toggleVisibility y hacerlo ejecutable sin errores ajustando los comentarios de doxygen a nuestras necesidades.

El prefijo de identificación único utilizado aquí es example-div.En la línea uno hay una configuración de enlace de hiperreferencia para desplegar una sección usando javascript directamente junto con algunos jQuery código.

Lo que queda es la frase del final.Contiene el jQuery Es necesario ejecutar el script para doblar inicialmente el segmento específico.Para bash-doxygen (y probablemente para otros lenguajes), el bloque debe ser de una sola línea debido al alcance del bloque del script.

Normalmente, el contenido entre \htmlonly y \endhtmlonly se inserta tal cual.Cuando desea insertar un fragmento HTML que tiene alcance de bloque, como una tabla o lista, que debería aparecer fuera de <p>..</p>, esto puede generar un HTML no válido.Puedes usar \htmlonly[block] para hacer que doxygen finalice el párrafo actual y lo reinicie después de \endhtmlonly.

como se notó en el documentación de doxigeno y un comentario debajo de la solución marcada a la derecha del respuesta de stackoverflow sobre la inclusión de etiquetas de script en la documentación de doxygen.

Gracias por leer.Espero que esto ayude a algunas personas que vienen por aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top