diff options
author | Sebastian Zenker <sebastian.zenker@gmx.de> | 2019-01-31 02:14:27 +0100 |
---|---|---|
committer | James E. King III <jking@apache.org> | 2019-01-30 20:14:27 -0500 |
commit | 2ec93c8a2da2531755078ab6d5a65a96e26cf4c2 (patch) | |
tree | 728151bc50149339c955d7258f6cb4b7bd59bcad /compiler | |
parent | 4f7d93d8c35565fc9c5a43e4637505352c974c69 (diff) | |
download | thrift-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.cc | 39 |
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>"; } |