diff options
Diffstat (limited to 'client/docgen')
| -rw-r--r-- | client/docgen/doc.h | 3 | ||||
| -rw-r--r-- | client/docgen/docgen.cc | 87 | ||||
| -rw-r--r-- | client/docgen/generate.cc | 40 | ||||
| -rw-r--r-- | client/docgen/parse.cc | 18 | ||||
| -rw-r--r-- | client/docgen/style.css | 5 | 
5 files changed, 129 insertions, 24 deletions
diff --git a/client/docgen/doc.h b/client/docgen/doc.h index ae693f5..5678476 100644 --- a/client/docgen/doc.h +++ b/client/docgen/doc.h @@ -69,6 +69,9 @@ public:    QString title;    QString name;    QString tag; +  bool serverside; +  bool clientside; +  QString classname;    QString extends;     bool container;    QString description; diff --git a/client/docgen/docgen.cc b/client/docgen/docgen.cc index e4af0a3..4eb2e08 100644 --- a/client/docgen/docgen.cc +++ b/client/docgen/docgen.cc @@ -32,6 +32,7 @@  #include <QDir>  #include <QMap>  #include <QDate> +#include <QFileInfo>  #include <stdio.h> @@ -39,7 +40,9 @@  #include "parse.h"  #include "generate.h" -#define INPUT "../widgets" +#define WIDGETS_DIR "../widgets" +#define SERVER_DIR "../../server/src" +#define CLIENT_DIR ".."  #define OUTPUT "html"  QString output; @@ -94,16 +97,46 @@ void writeIndex(QMap<QString, Doc> &docs)    out += "<h1>Pracro "VERSION" Documentation</h1>\n";    out += "<h2>Overview</h2>\n"; +  out += "<h3>Clientside</h3>\n"; +  out += "<h4>Widgets</h4>\n";    out += "<ul>\n";    QMap<QString, Doc>::iterator i = docs.begin();    while(i != docs.end()) {      Doc &doc = *i; -    out += "<li><a href=\""+doc.name+".html\">["+doc.name+"]</a> - "+ -      doc.title+"</li>\n"; +    if(doc.tag != "") { +      out += "<li><a href=\""+doc.name+".html\">["+doc.name+"]</a> - "+ +        doc.title+"</li>\n"; +    } +    i++; +  } +  out += "</ul>\n"; +  out += "<h4>Classes</h4>\n"; +  out += "<ul>\n"; +  i = docs.begin(); +  while(i != docs.end()) { +    Doc &doc = *i; +    if(doc.classname != "" && doc.clientside) { +      out += "<li><a href=\""+doc.name+".html\">["+doc.name+"]</a> - "+ +        doc.title+"</li>\n"; +    }      i++;    }    out += "</ul>\n"; +  out += "<h3>Serverside</h3>\n"; +  out += "<ul>\n"; +  i = docs.begin(); +  while(i != docs.end()) { +    Doc &doc = *i; +    if(doc.classname != "" && doc.serverside) { +      out += "<li><a href=\""+doc.name+".html\">["+doc.name+"]</a> - "+ +        doc.title+"</li>\n"; +    } +    i++; +  } +  out += "</ul>\n"; + +    QFile::remove(output + "/index.html");    QFile ofile(output + "/index.html");    ofile.open(QIODevice::ReadWrite | QIODevice::Text); @@ -133,15 +166,47 @@ int main(int argc, char *argv[])    QFile::remove(output + "/style.css");    QFile::copy("style.css", output + "/style.css"); -  QDir dir(INPUT); -  QStringList filter; filter << "*.h"; -  dir.setNameFilters(filter); +  QStringList files; + +  // Widgets +  { +    QDir dir(WIDGETS_DIR); +    QStringList filter; filter << "*.h"; +    dir.setNameFilters(filter); +    if(!dir.exists()) return 1; +    QFileInfoList inflst = dir.entryInfoList(QDir::Files); +    foreach(QFileInfo inf, inflst) { +      files.append(inf.absoluteFilePath()); +    } +  } + +  // Client +  { +    QDir dir(CLIENT_DIR); +    QStringList filter; filter << "*.h"; +    dir.setNameFilters(filter); +    if(!dir.exists()) return 1; +    QFileInfoList inflst = dir.entryInfoList(QDir::Files); +    foreach(QFileInfo inf, inflst) { +      files.append(inf.absoluteFilePath()); +    } +  } + +  // Server +  { +    QDir dir(SERVER_DIR); +    QStringList filter; filter << "*.h"; +    dir.setNameFilters(filter); +    if(!dir.exists()) return 1; +    QFileInfoList inflst = dir.entryInfoList(QDir::Files); +    foreach(QFileInfo inf, inflst) { +      files.append(inf.absoluteFilePath()); +    } +  } -  if(!dir.exists()) return 1; -  QStringList l = dir.entryList(QDir::Files); -  foreach(QString file, l) { -    Doc doc = parse(QString(INPUT) + "/" + file); -    if(doc.title != "" || doc.tag != "") +  foreach(QString file, files) { +    Doc doc = parse(file); +    if(doc.title != "" || doc.tag != "" || doc.classname != "")        docs[doc.name] = doc;    } diff --git a/client/docgen/generate.cc b/client/docgen/generate.cc index b521f1f..f418b24 100644 --- a/client/docgen/generate.cc +++ b/client/docgen/generate.cc @@ -219,6 +219,18 @@ QString generate(Doc &doc, QMap<QString, QVector<Method> > &meths,        highlight("<" + doc.tag + " />", xml) + "</pre></div>\n";    } +  if(doc.serverside) +    out += "      <div class=\"availablility\">Available serverside.</div>\n"; + +  if(doc.clientside) +    out += "      <div class=\"availablility\">Available clientside.</div>\n"; + + +  if(doc.classname != "" ){ +    out += "      <div class=\"classname\">Class<pre class=\"code\">" + +      doc.classname + "</pre></div>\n"; +  } +    if(doc.container) {      out += "      <div class=\"container\">Widget is a container.</div>\n";    } @@ -248,21 +260,23 @@ QString generate(Doc &doc, QMap<QString, QVector<Method> > &meths,    out += generateExamples(doc.examples, xml); -  out += "      <h2>Attributes</h2>\n"; -  out += "      <div class=\"attributes\">\n"; -  if(doc.attributes.size()) { -    out += generateAttributes(doc.attributes); -  } +  if(doc.tag != "") { +    out += "      <h2>Attributes</h2>\n"; +    out += "      <div class=\"attributes\">\n"; +    if(doc.attributes.size()) { +      out += generateAttributes(doc.attributes); +    } -  QMap<QString, QVector<Attribute> >::iterator i = atts.begin(); -  while(i != atts.end()) { -    out += "      <h3>Attributes inherited from <a href=\"" + i.key() + -      ".html\">"+i.key()+"</a>:</h3>\n"; -    out += generateAttributes(i.value()); -    i++; +    QMap<QString, QVector<Attribute> >::iterator i = atts.begin(); +    while(i != atts.end()) { +      out += "      <h3>Attributes inherited from <a href=\"" + i.key() + +        ".html\">"+i.key()+"</a>:</h3>\n"; +      out += generateAttributes(i.value()); +      i++; +    } +    out += "      </div>\n";    } -  out += "      </div>\n"; -  +    out += generateMethodOverview(doc, meths);    out += "      <h2>Methods</h2>\n"; diff --git a/client/docgen/parse.cc b/client/docgen/parse.cc index 64c2aa7..0354f57 100644 --- a/client/docgen/parse.cc +++ b/client/docgen/parse.cc @@ -89,6 +89,8 @@ Doc parse(QString filename)  {    Doc doc;    doc.container = false; +  doc.serverside = false; +  doc.clientside = false;    QFileInfo fi(filename);    QString name = fi.fileName(); @@ -134,10 +136,26 @@ Doc parse(QString filename)          continue;        } +      if(state == none && line.left(6) == "@class") { +        doc.classname = line.right(line.length() - line.indexOf(" ") - 1); +        doc.name = doc.classname; +        continue; +      } +        if(state == none && line.left(8) == "@extends") {          doc.extends = line.right(line.length() - line.indexOf(" ") - 1);          continue;        } + +      if(state == none && line.left(11) == "@serverside") { +        doc.serverside = true; +        continue; +      } + +      if(state == none && line.left(11) == "@clientside") { +        doc.clientside = true; +        continue; +      }        if(state == none && line.left(11) == "@screenshot") {          Screenshot s; diff --git a/client/docgen/style.css b/client/docgen/style.css index e938648..17f087e 100644 --- a/client/docgen/style.css +++ b/client/docgen/style.css @@ -26,6 +26,11 @@ a:hover {  }  .doc .tagname { +    font-size: 1.5em; +    text-align: center; +} +.doc .classname { +    font-size: 1.5em;      text-align: center;  }  .doc .extends {}  | 
