076d54726c175d8fab099e10b8e83e3e89ef4eea kent Mon Jun 12 10:02:30 2017 -0700 Adding title option diff --git src/tabFile/tabToHtml/tabToHtml.c src/tabFile/tabToHtml/tabToHtml.c index 552fff9..5c3bed1 100644 --- src/tabFile/tabToHtml/tabToHtml.c +++ src/tabFile/tabToHtml/tabToHtml.c @@ -1,108 +1,119 @@ /* tabToHtml - Convert tab-separated-file to an HTML file that is a table and not much else.. */ #include "common.h" #include "linefile.h" #include "hash.h" #include "options.h" #include "fieldedTable.h" -boolean gEmbed; // If true we embed in another page +char *clTitle = NULL; // Title from command line + +boolean clEmbed; // If true we embed in another page void usage() /* Explain usage and exit. */ { errAbort( "tabToHtml - Convert tab-separated-file to an HTML file that is a table and not much else.\n" "usage:\n" - " tabToHtml XXX\n" + " tabToHtml in.tsv out.html\n" "options:\n" " -embed - don't write beginning and end of page, just controls and tree.\n" " useful for making html to be embedded in another page.\n" + " -title=\"Some sort of table title\"\n" ); } /* Command line validation table. */ static struct optionSpec options[] = { {"embed", OPTION_BOOLEAN}, + {"title", OPTION_STRING}, {NULL, 0}, }; void writeHtml(struct fieldedTable *table, FILE *f) /* Write HTML version of table */ { -if (!gEmbed) +if (!clEmbed) { fputs( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">\n" "<HTML>\n" "<HEAD>\n" " <META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;CHARSET=iso-8859-1\">\n" , f); + if (clTitle) + fprintf(f, " <TITLE>%s</TITLE>\n", clTitle); + else fprintf(f, " <TITLE>table %s</TITLE>\n", table->name); fputs( "</HEAD>\n" "<BODY>\n" , f); fprintf(f, "<style>table, th, td " "{ border: 1px solid black; " " border-collapse: collapse; " - " padding: 2px;" + " padding: 3px;" "}</style>"); + if (clTitle) + fprintf(f, "<H2>%s</H2>\n", clTitle); + else fprintf(f, "<H2>table from %s</H2>\n", table->name); } /* Print table tag and header row. */ fprintf(f, "<table>\n"); fprintf(f, "<tr>"); int i; for (i=0; i<table->fieldCount; ++i) { char *field = table->fields[i]; fprintf(f, " <th>%s</th>", field); } fprintf(f, "</tr>\n"); /* Print data rows. */ struct fieldedRow *fr; for (fr = table->rowList; fr != NULL; fr = fr->next) { char **row = fr->row; fprintf(f, "<tr>"); for (i=0; i<table->fieldCount; ++i) fprintf(f, " <td>%s</td>", row[i]); fprintf(f, "<tr>\n"); } /* Close up table */ fprintf(f, "</TABLE>\n"); /* Unless embedded close up web page too. */ -if (!gEmbed) +if (!clEmbed) { fputs( "</BODY>\n" "</HTML>\n" "\n" , f); } } void tabToHtml(char *inTsv, char *outHtml) /* tabToHtml - Convert tab-separated-file to an HTML file that is a table and not much else.. */ { struct fieldedTable *table = fieldedTableFromTabFile(inTsv, inTsv, NULL, 0); FILE *f = mustOpen(outHtml, "w"); writeHtml(table, f); carefulClose(&f); } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc != 3) usage(); -gEmbed = optionExists("embed"); +clEmbed = optionExists("embed"); +clTitle = optionVal("title", NULL); tabToHtml(argv[1], argv[2]); return 0; }