changeset 773:6dbbb403fc58

Improved the DDocEmitter.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Mon, 18 Feb 2008 17:36:12 +0100
parents f0efbcb49248
children 846044180d22
files trunk/src/cmd/DDoc.d trunk/src/dil/lexer/Token.d trunk/src/dil/semantic/Module.d trunk/src/macros_dil.ddoc
diffstat 4 files changed, 43 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/trunk/src/cmd/DDoc.d	Mon Feb 18 03:51:45 2008 +0100
+++ b/trunk/src/cmd/DDoc.d	Mon Feb 18 17:36:12 2008 +0100
@@ -144,11 +144,14 @@
       {
         if (auto copyright = cmnt.takeCopyright())
           mtable.insert(new Macro("COPYRIGHT", copyright.text));
-        DESC({ writeComment(); });
+        DESC({
+          writeComment();
+          MEMBERS("MODULE", { visitD(modul.root); });
+        });
       }
     }
-    MEMBERS("MODULE", { visitD(modul.root); });
-    write(\n);
+    else
+      MEMBERS("MODULE", { visitD(modul.root); });
     return text;
   }
 
@@ -440,7 +443,9 @@
   void SYMBOL(char[] name, Declaration d)
   {
     auto loc = d.begin.getRealLocation();
-    auto str = Format("$(SYMBOL {}, {}, {}.d, {})", name, modul.getFQN(), modul.getFQNPath(), loc.lineNum);
+    auto str = Format("$(SYMBOL {}, {}, {}.{}, {})",
+                      name, modul.getFQN(), modul.getFQNPath(),
+                      modul.fileExtension(), loc.lineNum);
     write(str);
     // write("$(DDOC_PSYMBOL ", name, ")");
   }
@@ -523,6 +528,21 @@
     });
   }
 
+  void writeAliasOrTypedef(T)(T d)
+  {
+    auto prefix = is(T == AliasDeclaration) ? "alias " : "typedef ";
+    if (auto vd = d.decl.Is!(VariablesDeclaration))
+    {
+      auto type = textSpan(vd.typeNode.baseType.begin, vd.typeNode.end);
+      foreach (name; vd.names)
+        DECL({ write(prefix); write(escape(type), " "); SYMBOL(name.str, d); });
+    }
+    else if (auto fd = d.decl.Is!(FunctionDeclaration))
+    {}
+    // DECL({ write(textSpan(d.begin, d.end)); }, false);
+    DESC({ writeComment(); });
+  }
+
   alias Declaration D;
 
 override:
@@ -533,13 +553,7 @@
   {
     if (!ddoc(d))
       return d;
-    if (auto vd = d.decl.Is!(VariablesDeclaration))
-      foreach (name; vd.names)
-        DECL({ write("alias "); SYMBOL(name.str, d); });
-    else if (auto fd = d.decl.Is!(FunctionDeclaration))
-    {}
-    // DECL({ write(textSpan(d.begin, d.end)); }, false);
-    DESC({ writeComment(); });
+    writeAliasOrTypedef(d);
     return d;
   }
 
@@ -547,13 +561,7 @@
   {
     if (!ddoc(d))
       return d;
-    if (auto vd = d.decl.Is!(VariablesDeclaration))
-      foreach (name; vd.names)
-        DECL({ write("typedef "); SYMBOL(name.str, d); });
-    else if (auto fd = d.decl.Is!(FunctionDeclaration))
-    {}
-    // DECL({ write(textSpan(d.begin, d.end)); }, false);
-    DESC({ writeComment(); });
+    writeAliasOrTypedef(d);
     return d;
   }
 
@@ -717,7 +725,7 @@
   {
     if (!ddoc(d))
       return d;
-    DECL({ write("invariant"); });
+    DECL({ SYMBOL("invariant", d); });
     DESC({ writeComment(); });
     return d;
   }
@@ -726,7 +734,7 @@
   {
     if (!ddoc(d))
       return d;
-    DECL({ write("unittest"); });
+    DECL({ SYMBOL("unittest", d); });
     DESC({ writeComment(); });
     return d;
   }
--- a/trunk/src/dil/lexer/Token.d	Mon Feb 18 03:51:45 2008 +0100
+++ b/trunk/src/dil/lexer/Token.d	Mon Feb 18 17:36:12 2008 +0100
@@ -192,6 +192,11 @@
     return kind == kind2;
   }
 
+  int opCmp(Token* rhs)
+  {
+    return start < rhs.start;
+  }
+
   /// Returns the Location of this token.
   Location getLocation(bool realLocation)()
   {
--- a/trunk/src/dil/semantic/Module.d	Mon Feb 18 03:51:45 2008 +0100
+++ b/trunk/src/dil/semantic/Module.d	Mon Feb 18 17:36:12 2008 +0100
@@ -57,6 +57,14 @@
     return sourceText.filePath;
   }
 
+  string fileExtension()
+  {
+    foreach_reverse(i, c; filePath)
+      if (c == '.')
+        return filePath[i+1..$];
+    return "";
+  }
+
   void setParser(Parser parser)
   {
     this.parser = parser;
--- a/trunk/src/macros_dil.ddoc	Mon Feb 18 03:51:45 2008 +0100
+++ b/trunk/src/macros_dil.ddoc	Mon Feb 18 17:36:12 2008 +0100
@@ -1,2 +1,3 @@
 COPYRIGHT = Copyright © 2007-$(YEAR), Aziz Köksal. All rights reserved.
-SYMBOL = <a href="http://hg.sharesource.org/dil/file/tip/trunk/src/$3#L$4">$1</a>
+SYMBOL_ = <a href="http://hg.sharesource.org/dil/file/tip/trunk/src/$3#L$4">$1</a>
+SYMBOL = <a href="./htmlsrc/$2.html#L$4">$1</a>