mirror of https://github.com/YosysHQ/yosys.git
parent
a955c42d6c
commit
11fe4d0862
|
@ -765,63 +765,6 @@ struct HelpPass : public Pass {
|
|||
log(" help <celltype>+ .... print verilog code for given cell type\n");
|
||||
log("\n");
|
||||
}
|
||||
void escape_tex(std::string &tex)
|
||||
{
|
||||
for (size_t pos = 0; (pos = tex.find('_', pos)) != std::string::npos; pos += 2)
|
||||
tex.replace(pos, 1, "\\_");
|
||||
for (size_t pos = 0; (pos = tex.find('$', pos)) != std::string::npos; pos += 2)
|
||||
tex.replace(pos, 1, "\\$");
|
||||
}
|
||||
void write_tex(FILE *f, std::string cmd, std::string title, std::string text)
|
||||
{
|
||||
size_t begin = text.find_first_not_of("\n"), end = text.find_last_not_of("\n");
|
||||
if (begin != std::string::npos && end != std::string::npos && begin < end)
|
||||
text = text.substr(begin, end-begin+1);
|
||||
std::string cmd_unescaped = cmd;
|
||||
escape_tex(cmd);
|
||||
escape_tex(title);
|
||||
fprintf(f, "\\section{%s -- %s}\n", cmd.c_str(), title.c_str());
|
||||
fprintf(f, "\\label{cmd:%s}\n", cmd_unescaped.c_str());
|
||||
fprintf(f, "\\begin{lstlisting}[numbers=left,frame=single]\n");
|
||||
fprintf(f, "%s\n\\end{lstlisting}\n\n", text.c_str());
|
||||
}
|
||||
void escape_html(std::string &html)
|
||||
{
|
||||
size_t pos = 0;
|
||||
while ((pos = html.find_first_of("<>&", pos)) != std::string::npos)
|
||||
switch (html[pos]) {
|
||||
case '<':
|
||||
html.replace(pos, 1, "<");
|
||||
pos += 4;
|
||||
break;
|
||||
case '>':
|
||||
html.replace(pos, 1, ">");
|
||||
pos += 4;
|
||||
break;
|
||||
case '&':
|
||||
html.replace(pos, 1, "&");
|
||||
pos += 5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
void write_html(FILE *idxf, std::string cmd, std::string title, std::string text)
|
||||
{
|
||||
FILE *f = fopen(stringf("cmd_%s.in", cmd.c_str()).c_str(), "wt");
|
||||
fprintf(idxf, "<li><a href=\"cmd_%s.html\"> ", cmd.c_str());
|
||||
|
||||
escape_html(cmd);
|
||||
escape_html(title);
|
||||
escape_html(text);
|
||||
|
||||
fprintf(idxf, "%s</a> <span>%s</span></a>\n", cmd.c_str(), title.c_str());
|
||||
|
||||
fprintf(f, "@cmd_header %s@\n", cmd.c_str());
|
||||
fprintf(f, "<h1>%s - %s</h1>\n", cmd.c_str(), title.c_str());
|
||||
fprintf(f, "<pre>%s</pre>\n", text.c_str());
|
||||
fprintf(f, "@footer@\n");
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
void write_rst(std::string cmd, std::string title, std::string text)
|
||||
{
|
||||
FILE *f = fopen(stringf("docs/source/cmd/%s.rst", cmd.c_str()).c_str(), "wt");
|
||||
|
@ -958,24 +901,6 @@ struct HelpPass : public Pass {
|
|||
return;
|
||||
}
|
||||
// this option is undocumented as it is for internal use only
|
||||
else if (args[1] == "-write-tex-command-reference-manual") {
|
||||
FILE *f = fopen("command-reference-manual.tex", "wt");
|
||||
fprintf(f, "%% Generated using the yosys 'help -write-tex-command-reference-manual' command.\n\n");
|
||||
for (auto &it : pass_register) {
|
||||
std::ostringstream buf;
|
||||
log_streams.push_back(&buf);
|
||||
it.second->help();
|
||||
if (it.second->experimental_flag) {
|
||||
log("\n");
|
||||
log("WARNING: THE '%s' COMMAND IS EXPERIMENTAL.\n", it.first.c_str());
|
||||
log("\n");
|
||||
}
|
||||
log_streams.pop_back();
|
||||
write_tex(f, it.first, it.second->short_help, buf.str());
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
// this option is undocumented as it is for internal use only
|
||||
else if (args[1] == "-write-rst-command-reference-manual") {
|
||||
for (auto &it : pass_register) {
|
||||
std::ostringstream buf;
|
||||
|
@ -990,23 +915,6 @@ struct HelpPass : public Pass {
|
|||
write_rst(it.first, it.second->short_help, buf.str());
|
||||
}
|
||||
}
|
||||
// this option is undocumented as it is for internal use only
|
||||
else if (args[1] == "-write-web-command-reference-manual") {
|
||||
FILE *f = fopen("templates/cmd_index.in", "wt");
|
||||
for (auto &it : pass_register) {
|
||||
std::ostringstream buf;
|
||||
log_streams.push_back(&buf);
|
||||
it.second->help();
|
||||
if (it.second->experimental_flag) {
|
||||
log("\n");
|
||||
log("WARNING: THE '%s' COMMAND IS EXPERIMENTAL.\n", it.first.c_str());
|
||||
log("\n");
|
||||
}
|
||||
log_streams.pop_back();
|
||||
write_html(f, it.first, it.second->short_help, buf.str());
|
||||
}
|
||||
fclose(f);
|
||||
}
|
||||
else if (pass_register.count(args[1])) {
|
||||
pass_register.at(args[1])->help();
|
||||
if (pass_register.at(args[1])->experimental_flag) {
|
||||
|
|
Loading…
Reference in New Issue