# HG changeset patch # User Aziz K?ksal # Date 1203352572 -3600 # Node ID 6dbbb403fc58af9d883529ed9ec7dd4411c1a8d8 # Parent f0efbcb49248fae3c0e757c630f391d8809955e3 Improved the DDocEmitter. diff -r f0efbcb49248 -r 6dbbb403fc58 trunk/src/cmd/DDoc.d --- 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; } diff -r f0efbcb49248 -r 6dbbb403fc58 trunk/src/dil/lexer/Token.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)() { diff -r f0efbcb49248 -r 6dbbb403fc58 trunk/src/dil/semantic/Module.d --- 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; diff -r f0efbcb49248 -r 6dbbb403fc58 trunk/src/macros_dil.ddoc --- 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 = $1 +SYMBOL_ = $1 +SYMBOL = $1