Javascript-Schnipsel doxygen Stil Kommentar zu HTML konvertieren
-
12-09-2019 - |
Frage
In Bezug auf diese Frage , I wurde gefragt, ob jemand eine JavaScript-Code-snippet / Bibliothek kennt einen einzigen doxygen Kommentar zu HTML?
konvertierenBeispiel:
/** This is a comment block
*
* \b bold text
* \i italic text
*/
würde etwas umgewandelt werden wie:
<p>This is a comment block</p>
<p><b>bold</b> text</p>
<p><i>italic</i> text</p>
Ähnliche für alle anderen Formatierungen verwandte Tags von doxygen.
Ich habe diese bereits, was ein guter Ausgang zu sein scheint Punkt, wenn ich es selbst implementieren, aber möglicherweise ein komplettes Projekt fehle ich: -)
Also, Vorschläge willkommen!
Lösung
Nutzung eines vorhandenen Werkzeug / Codebasis, die zumindest tut Teil von dem, was Sie wollen, ist die beste Wahl. Parsing ist kein einfaches Problem, vor allem der Suche nach doxygen Kommentare in Code, vor allem, wenn Sie mehrere Sprachen sind Handhabung. Eine schnelle Suche aufdrehen brachte keine schrecklich offensichtlich Projekte, aber wenn Sie bereit sind, Ihre eigenen zu erstellen, wenn es sein muss, würde ich vorschlagen, mit dem doxygen Codebasis beginnen sich. Es ist Open-Source und verfügbar über SVN oder direkter Download . Beachten Sie, dass doxygen in C ++ geschrieben ist, aber wenn Sie die Aktionen des Parsers folgen kann (vielleicht nur für eine bestimmte Sprache) es könnte Ihnen jede Menge Arbeit sparen und verhindern Eckfällen fehlt, etc. Es hängt alles davon ab, wie robust Sie Ihre Lösung sein, und wenn es nur sein, werden Sie es verwenden oder wenn Sie am Ende kann es für andere zu unterstützen. Viel Glück!
Andere Tipps
function commentToTag(comment) {
var header = null;
var commentHtml = '';
comment.split('\n').forEach(function (i) {
var array = i.split(' ');
do {
var index = array.indexOf('');
if (index !== -1) array.splice(index, 1);
index = array.indexOf('');
} while (index !== -1);
do {
var index = array.indexOf('*');
if (index !== -1) array.splice(index, 1);
index = array.indexOf('*');
} while (index !== -1);
do {
var index = array.indexOf('/**');
if (index !== -1) array.splice(index, 3);
index = array.indexOf('/**');
} while (index !== -1);
do {
var index = array.indexOf('*/');
if (index !== -1) array.splice(index, 2);
index = array.indexOf('*/');
} while (index !== -1);
if (array.length === 0) return;
if (header === null) {
header = "<p>" + array.join(' ') + "</p>\n";
return;
}
const tag = array.splice(0, 1);
commentHtml += "<p><"+tag + ">"+array.splice(0,1)+"</" +tag+ ">" + array.join(' ') + '</p>\n';
});
return header + commentHtml;
}
var comment = `/** This is a comment block
*
* \i bold text
* \i italic text
*/`;
console.log(commentToTag(comment));