# HG changeset patch # User Aziz K?ksal # Date 1204390703 -3600 # Node ID dcd30b0ba711a70ccd04966af6e43eb21d14306c # Parent fd719161e743efc370d19500aaaacb5325152b6c Added --xml option to command 'ddoc'. diff -r fd719161e743 -r dcd30b0ba711 trunk/src/TypeRules.d --- a/trunk/src/TypeRules.d Sat Mar 01 18:04:29 2008 +0200 +++ b/trunk/src/TypeRules.d Sat Mar 01 17:58:23 2008 +0100 @@ -31,7 +31,7 @@ "cfloat", "cdouble", "creal"/+, "void"+/ ]; -static const string[] unaExpressions = [ +static const string[] unaryExpressions = [ "!x", "&x", "~x", @@ -43,7 +43,7 @@ "x--", ]; -static const string[] binExpressions = [ +static const string[] binaryExpressions = [ "x!<>=y", "x!<>y", "x!<=y", @@ -72,7 +72,7 @@ "x,y" ]; -char[] genBinExpArray(char[] expression) +char[] genBinaryExpArray(char[] expression) { char[] result = "[\n"; foreach (t1; basicTypes) @@ -86,8 +86,24 @@ result[result.length-1] = ']'; // Overwrite last comma. return result; } +// pragma(msg, mixin(genBinaryExpArray("x%y")).stringof); -char[] genUnaExpArray(char[] expression) +char[] genBinaryExpsArray() +{ + char[] result = "[\n"; + foreach (expression; binaryExpressions[0..42]) + { +// pragma(msg, "asd"); + result ~= genBinaryExpArray(expression)/+ ~ ",\n"+/; + result ~= ",\n"; + } + result[result.length-2] = ']'; + return result; +} + +// pragma(msg, mixin(genBinaryExpsArray()).stringof); + +char[] genUnaryExpArray(char[] expression) { char[] result = "[\n"; foreach (t1; basicTypes) @@ -96,4 +112,67 @@ return result; } -// pragma(msg, mixin(genBinExpArray("x+y")).stringof); +char[] genUnaryExpsArray() +{ + char[] result = "[\n"; + foreach (expression; unaryExpressions) + result ~= genUnaryExpArray(expression) ~ ",\n"; + result[result.length-2] = ']'; + return result; +} + +// pragma(msg, mixin(genUnaryExpsArray()).stringof); + +void genHTMLTypeRulesTables() +{ + auto unaryExpsResults = mixin(genUnaryExpsArray()); +// auto binaryExpsResults = mixin(genBinaryExpsArray()); + + Stdout( + ``\n + ``\n + ``\n + ` `\n + ` `\n + ``\n + ``\n + ); + + Stdout.format("\n", unaryExpressions.length); + Stdout(""); + foreach (unaryExpression; unaryExpressions) + Stdout.format("", unaryExpression); + Stdout("\n"); + foreach (i, basicType; basicTypes) + { + Stdout.format("\n", basicType); + foreach (unaryExpResults; unaryExpsResults) + { + assert(unaryExpResults.length == basicTypes.length); + Stdout.format("", unaryExpResults[i]); + } + Stdout("\n\n"); + } + Stdout("
Unary Expressions
{}
{}{}
\n"); + + foreach (binaryExpression; binaryExpressions) + { + Stdout.format("\n", basicTypes.length); + Stdout.format("", binaryExpression); + Stdout("\n\n"); + foreach (i, basicType; basicTypes) + { + Stdout.format("\n", basicType); +// foreach (basicType; basicTypes) + { + } + Stdout("\n\n"); + } + Stdout("
Binary Expression
{}
{}
\n"); + } + + Stdout( + "\n" + "\n" + ); +} diff -r fd719161e743 -r dcd30b0ba711 trunk/src/cmd/DDoc.d --- a/trunk/src/cmd/DDoc.d Sat Mar 01 18:04:29 2008 +0200 +++ b/trunk/src/cmd/DDoc.d Sat Mar 01 17:58:23 2008 +0100 @@ -36,8 +36,8 @@ /// Executes the doc generation command. void execute(string[] filePaths, string destDir, string[] macroPaths, - bool incUndoc, bool verbose, CompilationContext context, - InfoManager infoMan) + bool writeXML, bool incUndoc, bool verbose, + CompilationContext context, InfoManager infoMan) { // Parse macro files. MacroTable mtable; @@ -52,7 +52,8 @@ // foreach (k, v; mtable.table) // Stdout(k)("=")(v.text); - auto tokenHL = new TokenHighlighter(infoMan); // For DDoc code sections. + // For DDoc code sections. + auto tokenHL = new TokenHighlighter(infoMan, writeXML == false); // Process D files. foreach (filePath; filePaths) @@ -69,7 +70,7 @@ // Generate documentation. auto dest = new FilePath(destDir); - dest.append(mod.getFQN() ~ ".html"); + dest.append(mod.getFQN() ~ (writeXML ? ".xml" : ".html")); InfoManager infoMan2; // Collects warnings from the macro expander. if (verbose) @@ -78,14 +79,15 @@ infoMan2 = new InfoManager(); } - writeDocFile(dest.toString(), mod, mtable, incUndoc, tokenHL, infoMan2); + writeDocFile(dest.toString(), mod, mtable, writeXML, incUndoc, tokenHL, infoMan2); if (infoMan2) infoMan ~= infoMan2.info; } } -void writeDocFile(string dest, Module mod, MacroTable mtable, bool incUndoc, +void writeDocFile(string dest, Module mod, MacroTable mtable, + bool writeXML, bool incUndoc, TokenHighlighter tokenHL, InfoManager infoMan) { // Create a macro environment for this module. @@ -94,15 +96,19 @@ // MODPATH is not in the specs. mtable.insert("MODPATH", mod.getFQNPath() ~ "." ~ mod.fileExtension()); mtable.insert("TITLE", mod.getFQN()); - mtable.insert("DOCFILENAME", mod.getFQN() ~ ".html"); + mtable.insert("DOCFILENAME", mod.getFQN() ~ (writeXML ? ".xml" : ".html")); auto timeStr = Time.toString(); mtable.insert("DATETIME", timeStr); mtable.insert("YEAR", Time.year(timeStr)); - auto doc = new DDocXMLEmitter(mod, mtable, incUndoc, tokenHL); - doc.emit(); + DDocEmitter docEmitter; + if (writeXML) + docEmitter = new DDocXMLEmitter(mod, mtable, incUndoc, tokenHL); + else + docEmitter = new DDocEmitter(mod, mtable, incUndoc, tokenHL); + docEmitter.emit(); // Set BODY macro to the text produced by the DDocEmitter. - mtable.insert("BODY", doc.text); + mtable.insert("BODY", docEmitter.text); // Do the macro expansion pass. auto fileText = MacroExpander.expand(mtable, "$(DDOC)", mod.filePath, infoMan); // fileText ~= "\n
\n" ~ doc.text ~ "\n
"; diff -r fd719161e743 -r dcd30b0ba711 trunk/src/cmd/DDocXML.d --- a/trunk/src/cmd/DDocXML.d Sat Mar 01 18:04:29 2008 +0200 +++ b/trunk/src/cmd/DDocXML.d Sat Mar 01 17:58:23 2008 +0100 @@ -1,5 +1,5 @@ /++ - Author: Aziz Köksal & Jari-Matti Mäkelä + Authors: Aziz Köksal & Jari-Matti Mäkelä License: GPL3 +/ module cmd.DDocXML; diff -r fd719161e743 -r dcd30b0ba711 trunk/src/cmd/Generate.d --- a/trunk/src/cmd/Generate.d Sat Mar 01 18:04:29 2008 +0200 +++ b/trunk/src/cmd/Generate.d Sat Mar 01 17:58:23 2008 +0100 @@ -371,7 +371,10 @@ TagMap tags; this(InfoManager infoMan, bool useHTML = true) { - auto map = TagMapLoader(infoMan).load(GlobalSettings.htmlMapFile); + string filePath = GlobalSettings.htmlMapFile; + if (!useHTML) + filePath = GlobalSettings.xmlMapFile; + auto map = TagMapLoader(infoMan).load(filePath); tags = new TagMap(map); } diff -r fd719161e743 -r dcd30b0ba711 trunk/src/config.d --- a/trunk/src/config.d Sat Mar 01 18:04:29 2008 +0200 +++ b/trunk/src/config.d Sat Mar 01 17:58:23 2008 +0100 @@ -14,7 +14,7 @@ var import_paths = []; /// E.g.: ["src/", "import/"] /// DDoc macro file paths. -var ddoc_files = ["predefined_xml.ddoc"]; /// E.g.: ["src/mymacros.ddoc", "othermacros.ddoc"] +var ddoc_files = ["predefined.ddoc"]; /// E.g.: ["src/mymacros.ddoc", "othermacros.ddoc"] var xml_map = "xml_map.d"; var html_map = "html_map.d"; diff -r fd719161e743 -r dcd30b0ba711 trunk/src/main.d --- a/trunk/src/main.d Sat Mar 01 18:04:29 2008 +0200 +++ b/trunk/src/main.d Sat Mar 01 17:58:23 2008 +0100 @@ -108,6 +108,7 @@ auto macroPaths = GlobalSettings.ddocFilePaths; char[][] filePaths; bool incUndoc; + bool writeXML; bool verbose; // Parse arguments. auto context = newCompilationContext(); @@ -115,6 +116,8 @@ { if (parseDebugOrVersion(arg, context)) {} + else if (arg == "--xml") + writeXML = true; else if (arg == "-i") incUndoc = true; else if (arg == "-v") @@ -127,7 +130,8 @@ infoMan = new InfoManager(); // Execute command. - cmd.DDoc.execute(filePaths, destination, macroPaths, incUndoc, verbose, context, infoMan); + cmd.DDoc.execute(filePaths, destination, macroPaths, writeXML, + incUndoc, verbose, context, infoMan); infoMan.hasInfo && printErrors(infoMan); break; case "gen", "generate": @@ -303,6 +307,9 @@ case "?", "help": printHelp(args.length >= 3 ? args[2] : ""); break; + // case "typerules": + // genHTMLTypeRulesTables(); + // break; default: } } @@ -448,6 +455,7 @@ Files with the extension .ddoc are recognized as macro definition files. Options: + --xml : write XML instead of HTML documents -i : include undocumented symbols -v : verbose output