753b10b19784b1d07abaf7ec6b827c752e40416f
Merge parents 4880079 9c65dec
tdreszer
  Wed Nov 30 12:27:45 2011 -0800
Merge-o-rama
diff --cc src/hg/lib/jsHelper.c
index 526f8da,0f2cf7b..5d79fce
--- src/hg/lib/jsHelper.c
+++ src/hg/lib/jsHelper.c
@@@ -632,58 -635,54 +643,68 @@@
              }
          hPrintf("%s]", indentBuf);
          break;
          }
      case jsonString:
          {
          hPrintf("%s", ((struct jsonStringElement *) json)->str);
          break;
          }
      default:
          {
          errAbort("jsonPrintRecurse; invalid type: %d", json->type);
          break;
          }
      }
- freez(&indentBuf);
+ if (indentLevel >= 0)
+     freez(&indentBuf);
  }
  
  void jsonPrint(struct jsonElement *json, char *name, int indentLevel)
  {
- // print out a jsonElement
+ // print out a jsonElement, indentLevel -1 means no indenting
  
  char *indentBuf = makeIndentBuf(indentLevel);
  if(name != NULL)
-     hPrintf("// START %s\n%svar %s = ", name, indentBuf, name);
- jsonPrintRecurse(json, indentLevel);
+     {
+     if (indentLevel >= 0 )
+         hPrintf("// START %s\n%s", name, indentBuf);
+     hPrintf("var %s = ", name);
+     }
+ jsonPrintRecurse(json, (indentLevel - 1)); // will increment back to indentLevel
  if(name != NULL)
-     hPrintf("%s;\n// END %s\n", indentBuf, name);
- freez(&indentBuf);
+     {
+     hPrintf("%s;\n", indentBuf);
+     if (indentLevel >= 0 )
+         hPrintf("// END %s\n", name);
+     }
+ if (indentLevel >= 0)
+     freez(&indentBuf);
  }
  
 +void jsonPrintGlobals(boolean wrapWithScriptTags)
 +// prints out the "common" globals json hash
 +// This hash is the one utils.js and therefore all CGIs know about
 +{
 +if (jsonGlobalsHash != NULL)
 +    {
 +    if (wrapWithScriptTags)
 +        printf("<script type='text/javascript'>\n");
 +    jsonPrint((struct jsonElement *) jsonGlobalsHash, "common", 0);
 +    if (wrapWithScriptTags)
 +        printf("</script>\n");
 +    }
 +}
 +
  void jsonErrPrintf(struct dyString *ds, char *format, ...)
  //  Printf a json error to a dyString for communicating with ajax code; format is:
  //  {"error": error message here}
  {
  va_list args;
  va_start(args, format);
  dyStringPrintf(ds, "{\"error\": \"");
  struct dyString *buf = newDyString(1000);
  dyStringVaPrintf(buf, format, args);
  dyStringAppend(ds, javaScriptLiteralEncode(dyStringCannibalize(&buf)));
  dyStringPrintf(ds, "\"}");
  va_end(args);
  }