Mercurial > projects > dil
changeset 800:dcd30b0ba711
Added --xml option to command 'ddoc'.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sat, 01 Mar 2008 17:58:23 +0100 |
parents | fd719161e743 |
children | c39667f1e814 |
files | trunk/src/TypeRules.d trunk/src/cmd/DDoc.d trunk/src/cmd/DDocXML.d trunk/src/cmd/Generate.d trunk/src/config.d trunk/src/main.d |
diffstat | 6 files changed, 115 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- 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( + `<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">`\n + `<html>`\n + `<head>`\n + ` <meta http-equiv="Content-Type" content="text/html; charset=utf-8">`\n + ` <link href="" rel="stylesheet" type="text/css">`\n + `</head>`\n + `<body>`\n + ); + + Stdout.format("<table>\n<tr><th colspan=\"{}\">Unary Expressions</th></tr>", unaryExpressions.length); + Stdout("<tr><td><!--typecol--></td>"); + foreach (unaryExpression; unaryExpressions) + Stdout.format("<td>{}</td>", unaryExpression); + Stdout("</tr>\n"); + foreach (i, basicType; basicTypes) + { + Stdout.format("<tr>\n<td>{}</td>", basicType); + foreach (unaryExpResults; unaryExpsResults) + { + assert(unaryExpResults.length == basicTypes.length); + Stdout.format("<td>{}</td>", unaryExpResults[i]); + } + Stdout("\n<tr>\n"); + } + Stdout("</table>\n"); + + foreach (binaryExpression; binaryExpressions) + { + Stdout.format("<table>\n<tr><th colspan=\"{}\">Binary Expression</th></tr>", basicTypes.length); + Stdout.format("<tr><td>{}</td>", binaryExpression); + Stdout("\n<tr>\n"); + foreach (i, basicType; basicTypes) + { + Stdout.format("<tr>\n<td>{}</td>", basicType); +// foreach (basicType; basicTypes) + { + } + Stdout("\n<tr>\n"); + } + Stdout("</table>\n"); + } + + Stdout( + "\n</body>" + "\n</html>" + ); +}
--- 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<pre>\n" ~ doc.text ~ "\n</pre>";
--- 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;
--- 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); }
--- 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";
--- 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