Озадачился я тут некоторое время назад вопросами создания автодокументации из исходников.
По крайней мере - извлечения документации из исходников.
В общем пишу автодокументатор. для себя. Вопрос в том что может быть я просто не нашел ничего такого из уже существующего (или плохо искал или не разобрался?).
Ключевая фича мне потребная - использование wiki-разметки, которая потом конвертируется в html.
Программ конвертации wiki2html написанных на C++ я не нашел (только одинокая гуёвая утилита на Java писанная), то, собственно, начал ваять собственное "произведение".
Ниже изложу то, что есть, а вас попрошу ответить на вопрос - есть ли что подобное УЖЕ - может мне стоит пока не поздно переключиться на какой стандартный автодокументатор? времени много разбираться не было... потому получив первые результаты, когда запал несколько поостыл... я все-таки задумался )))))
и так. что есть сейчас.
из исходника типа приведенного ниже :
Код:
class stdInReader : public QThread //::=класс $1= \n $*
{
Q_OBJECT
public: //::==$0==
// а эта заметка не будет извлечена потому что начинается не с "::".
stdInReader(QObject * parent = 0);//::===$*=== Конструктор
int init();//::===$*=== Создает необходимые под-объекты и переводит объект в состояние готовности к выполнению.
/*:: \n
На выходе $1 отдает: \n
1 if some errors was happened \n
0 of all ok \n
-1 if can\`t oopen stdIn \n
-2 if can\`t oopen stdOut \n
-3 if can\`t oopen stdErr \n */
void run(); //::===$*=== Начинает выполнение потока и работу объета.
signals: //::==$0==
void received_StdIn(const QByteArray &data); //::===$*=== Приняты данные по стандарному потоку ввода.
void fileClosed_StdIn(); //::===$*=== Стандартный поток ввода закрыла передающая сторона. (данных больше не будет)
...
извлекаются нужные нам комментарии с обработкой указаний $0-$9 и $*:
Код:
=класс stdInReader= \n class stdInReader : public QThread
==public:==
===stdInReader(QObject * parent = 0);=== Конструктор
===int init();=== Создает необходимые под-объекты и переводит объект в состояние готовности к выполнению.
\n
На выходе init(); отдает: \n
1 if some errors was happened \n
0 of all ok \n
-1 if can`t oopen stdIn \n
-2 if can`t oopen stdOut \n
-3 if can`t oopen stdErr \n
===void run();=== Начинает выполнение потока и работу объета.
==signals:==
===void received_StdIn(const QByteArray &data);=== Приняты данные по стандарному потоку ввода.
===void fileClosed_StdIn();=== Стандартный поток ввода закрыла передающая сторона. (данных больше не будет)
Далее полученный текст преобразуется в html аналогично тому как это делается в media-wiki на php)))
(единственное пока отличие - мой конвертор поддерживает "\n").
Кроме описанных выше указаний поддерживаются ссылки [[Имя страницы]], [http://mysite.ru.html имя сайта] и списки
"* элемент списка". Далее планирую ввести автоматическое индексирование разделов, т.е. создание индексного файла "ИмяКатегории" при встрече тега "[[Категория:ИмяКатегории]]"...
Идеи тут следующие: во первых - вики разметка проще и удобнее чем скажем html; можно легко ссылаться на другие страницы, определять разделы, перенаправления; вики-разметка ориентированна на "ручную" верстку.
Полученные wiki-текстовки можно сразу закидывать в online в какой media-wiki. или конвертировать в статический набор html-страничек который поставлять как документацию или вставлять в "систему помощи".
вот значит, господа - прошу совета. надо ли далее развивать эти утилиты или стоит "пока не поздно" воспользоваться стандартным документатором?
Прошу указать мне на какой существующий проект, позволяющий делать аналогичные вещи. Что бы я не занимался фигней)
увы, я не нашел или не разобрался.