5831b01de06e89ec49e930d8d7d3c41293a4b660 braney Mon Feb 6 15:05:26 2012 -0800 add a capability to automatically generate a link to the Assembly Gateway page. #6237 diff --git src/hg/lib/hVarSubst.c src/hg/lib/hVarSubst.c index dedd600..1920c9e 100644 --- src/hg/lib/hVarSubst.c +++ src/hg/lib/hVarSubst.c @@ -155,41 +155,48 @@ /* Return true if name looks like an abbreviated scientific name * (e.g. D. yakuba). */ { return (name != NULL && strlen(name) > 4 && isalpha(name[0]) && name[1] == '.' && name[2] == ' ' && isalpha(name[3])); } static boolean isDatabaseVar(char *varBase) /* Is this a variable that can be resolved only from the database name? * Specify the base name, excluding the o_ prefix. */ { return (strcasecmp(varBase, "organism") == 0) || (strcasecmp(varBase, "date") == 0) + || (strcasecmp(varBase, "linkToGatewayPage") == 0) || (strcasecmp(varBase, "db") == 0); } static char *valOrDb(char *val, char *database) /* return val if not-null, or a clone of database if it is null */ { if (val == NULL) val = cloneString(database); return val; } +static void substLinkToGatewayPage( struct dyString *dest, char *database) +/* substitute a link to the gateway page for this database */ +{ +dyStringPrintf(dest,"<a target=_blank href='/cgi-bin/hgGateway?db=%s'>Assembly Gateway page</a>.", database); +} + static void substDatabaseVar(char *database, char *varBase, struct dyString *dest) /* substitute a variable resolved from the database name. * Specify the base name, excluding the o_ prefix. If database * can be looked up, just substitute the database name. */ { if (sameString(varBase, "Organism")) { char *org = valOrDb(hOrganism(database), database); dyStringAppend(dest, org); freeMem(org); } else if (sameString(varBase, "ORGANISM")) { char *org = hOrganism(database); @@ -206,30 +213,32 @@ if ((org != NULL) && !isAbbrevScientificName(org)) tolowers(org); else org = valOrDb(org, database); dyStringAppend(dest, org); freeMem(org); } else if (sameString(varBase, "date")) { char *date = valOrDb(hFreezeDateOpt(database), database); dyStringAppend(dest, date); freeMem(date); } else if (sameString(varBase, "db")) dyStringAppend(dest, database); +else if (sameString(varBase, "linkToGatewayPage")) + substLinkToGatewayPage(dest, database); } static void substTrackDbVar(char *desc, struct trackDb *tdb, char *database, char *varName, struct dyString *dest) /* substitute a variable value obtained from trackDb */ { if (sameString(varName, "matrix")) substMatrixHtml(tdb, dest); else if (sameString(varName, "chainLinearGap")) substLinearGap(tdb, dest); else if (sameString(varName, "downloadsServer")) dyStringAppend(dest, hDownloadsServer()); else dyStringAppend(dest, lookupTrackDbSubVar(desc, tdb, varName, varName)); }