summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorSebastian Zenker <sebastian.zenker@gmx.de>2019-01-31 02:14:27 +0100
committerJames E. King III <jking@apache.org>2019-01-30 20:14:27 -0500
commit2ec93c8a2da2531755078ab6d5a65a96e26cf4c2 (patch)
tree728151bc50149339c955d7258f6cb4b7bd59bcad /compiler
parent4f7d93d8c35565fc9c5a43e4637505352c974c69 (diff)
downloadthrift-2ec93c8a2da2531755078ab6d5a65a96e26cf4c2.tar.gz
THRIFT-4763: HTML compiler produces invalid HTML document (#1720)
* HTML: the html generator did generate a closing </code> tag without a match <code> * THRIFT-4763: added HTML test and fixed up additional HTML generation issues
Diffstat (limited to 'compiler')
-rw-r--r--compiler/cpp/src/thrift/generate/t_html_generator.cc39
1 files changed, 19 insertions, 20 deletions
diff --git a/compiler/cpp/src/thrift/generate/t_html_generator.cc b/compiler/cpp/src/thrift/generate/t_html_generator.cc
index 8dfa3897e..00c9a0a9d 100644
--- a/compiler/cpp/src/thrift/generate/t_html_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_html_generator.cc
@@ -127,10 +127,10 @@ private:
*/
void t_html_generator::generate_program_toc() {
f_out_ << "<table class=\"table-bordered table-striped "
- "table-condensed\"><thead><th>Module</th><th>Services</th>"
- << "<th>Data types</th><th>Constants</th></thead>" << endl;
+ "table-condensed\"><thead><tr><th>Module</th><th>Services</th>"
+ << "<th>Data types</th><th>Constants</th></tr></thead><tbody>" << endl;
generate_program_toc_row(program_);
- f_out_ << "</table>" << endl;
+ f_out_ << "</tbody></table>" << endl;
}
/**
@@ -240,7 +240,7 @@ void t_html_generator::generate_program_toc_row(t_program* tprog) {
f_out_ << con_iter->second << "<br/>" << endl;
}
}
- f_out_ << "</code></td>" << endl << "</tr>";
+ f_out_ << "</td>" << endl << "</tr>";
}
/**
@@ -253,9 +253,8 @@ void t_html_generator::generate_program() {
current_file_ = program_->get_name() + ".html";
string fname = get_out_dir() + current_file_;
f_out_.open(fname.c_str());
- f_out_ << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"" << endl;
- f_out_ << " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">" << endl;
- f_out_ << "<html xmlns=\"http://www.w3.org/1999/xhtml\">" << endl;
+ f_out_ << "<!DOCTYPE html>" << endl;
+ f_out_ << "<html lang=\"en\">" << endl;
f_out_ << "<head>" << endl;
f_out_ << "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />" << endl;
generate_style_tag();
@@ -271,9 +270,9 @@ void t_html_generator::generate_program() {
f_out_ << "<hr/><h2 id=\"Constants\">Constants</h2>" << endl;
vector<t_const*> consts = program_->get_consts();
f_out_ << "<table class=\"table-bordered table-striped table-condensed\">";
- f_out_ << "<thead><th>Constant</th><th>Type</th><th>Value</th></thead>" << endl;
+ f_out_ << "<thead><tr><th>Constant</th><th>Type</th><th>Value</th></tr></thead><tbody>" << endl;
generate_consts(consts);
- f_out_ << "</table>";
+ f_out_ << "</tbody></table>";
}
if (!program_->get_enums().empty()) {
@@ -335,16 +334,16 @@ void t_html_generator::generate_index() {
current_file_ = "index.html";
string index_fname = get_out_dir() + current_file_;
f_out_.open(index_fname.c_str());
- f_out_ << "<html><head>" << endl;
+ f_out_ << "<!DOCTYPE html>" << endl << "<html lang=\"en\"><head>" << endl;
generate_style_tag();
f_out_ << "<title>All Thrift declarations</title></head><body>" << endl
<< "<div class=\"container-fluid\">" << endl << "<h1>All Thrift declarations</h1>" << endl;
f_out_ << "<table class=\"table-bordered table-striped "
- "table-condensed\"><thead><th>Module</th><th>Services</th><th>Data types</th>"
- << "<th>Constants</th></thead>" << endl;
+ "table-condensed\"><thead><tr><th>Module</th><th>Services</th><th>Data types</th>"
+ << "<th>Constants</th></tr></thead><tbody>" << endl;
vector<t_program*> programs;
generate_program_toc_rows(program_, programs);
- f_out_ << "</table>" << endl;
+ f_out_ << "</tbody></table>" << endl;
f_out_ << "</div></body></html>" << endl;
f_out_.close();
}
@@ -861,14 +860,14 @@ void t_html_generator::print_fn_args_doc(t_function* tfunction) {
f_out_ << "<br/><h4 id=\"Parameters_" << service_name_ << "_" << tfunction->get_name()
<< "\">Parameters</h4>" << endl;
f_out_ << "<table class=\"table-bordered table-striped table-condensed\">";
- f_out_ << "<thead><th>Name</th><th>Description</th></thead>";
+ f_out_ << "<thead><tr><th>Name</th><th>Description</th></tr></thead><tbody>";
for (; arg_iter != args.end(); arg_iter++) {
f_out_ << "<tr><td>" << (*arg_iter)->get_name();
f_out_ << "</td><td>";
f_out_ << escape_html((*arg_iter)->get_doc());
f_out_ << "</td></tr>" << endl;
}
- f_out_ << "</table>";
+ f_out_ << "</tbody></table>";
}
}
@@ -885,14 +884,14 @@ void t_html_generator::print_fn_args_doc(t_function* tfunction) {
f_out_ << "<br/><h4 id=\"Exceptions_" << service_name_ << "_" << tfunction->get_name()
<< "\">Exceptions</h4>" << endl;
f_out_ << "<table class=\"table-bordered table-striped table-condensed\">";
- f_out_ << "<thead><th>Type</th><th>Description</th></thead>";
+ f_out_ << "<thead><tr><th>Type</th><th>Description</th></tr></thead><tbody>";
for (; ex_iter != excepts.end(); ex_iter++) {
f_out_ << "<tr><td>" << (*ex_iter)->get_type()->get_name();
f_out_ << "</td><td>";
f_out_ << escape_html((*ex_iter)->get_doc());
f_out_ << "</td></tr>" << endl;
}
- f_out_ << "</table>";
+ f_out_ << "</tbody></table>";
}
}
}
@@ -975,8 +974,8 @@ void t_html_generator::generate_struct(t_struct* tstruct) {
vector<t_field*> members = tstruct->get_members();
vector<t_field*>::iterator mem_iter = members.begin();
f_out_ << "<table class=\"table-bordered table-striped table-condensed\">";
- f_out_ << "<thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</"
- "th><th>Default value</th></thead>" << endl;
+ f_out_ << "<thead><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</"
+ "th><th>Default value</th></tr></thead><tbody>" << endl;
for (; mem_iter != members.end(); mem_iter++) {
f_out_ << "<tr><td>" << (*mem_iter)->get_key() << "</td><td>";
f_out_ << (*mem_iter)->get_name();
@@ -1001,7 +1000,7 @@ void t_html_generator::generate_struct(t_struct* tstruct) {
}
f_out_ << "</td></tr>" << endl;
}
- f_out_ << "</table><br/>";
+ f_out_ << "</tbody></table><br/>";
print_doc(tstruct);
f_out_ << "</div>";
}