98aa95938f3af948c60e20044318595f10fee780
braney
  Thu May 13 15:22:00 2021 -0700
ongoing work on cart rewrite system

diff --git src/hg/testRewrite/testRewrite.c src/hg/testRewrite/testRewrite.c
index 1467751..9231041 100644
--- src/hg/testRewrite/testRewrite.c
+++ src/hg/testRewrite/testRewrite.c
@@ -1,39 +1,43 @@
 /* testRewrite - Test harness for cart rewrite tool. */
 #include "common.h"
 #include "linefile.h"
 #include "hash.h"
 #include "options.h"
-#include <regex.h>
+#include "cartRewrite.h"
 
 void usage()
 /* Explain usage and exit. */
 {
 errAbort(
   "testRewrite - Test harness for cart rewrite tool\n"
   "usage:\n"
-  "   testRewrite script input output\n"
+  "   testRewrite input output\n"
   "options:\n"
-  "   -xxx=XXX\n"
+  "   -script=sed-like script\n"
   );
 }
 
 /* Command line validation table. */
 static struct optionSpec options[] = {
+   {"script", OPTION_STRING},
    {NULL, 0},
 };
 
+char *script;
+
+#ifdef NOTNOW
 struct snippet
 {
 struct snippet *next;
 int num;
 char *precursor;
 int precursorLen;
 };
 
 struct edit
 {
 struct edit *next;
 regex_t *compiledExp;
 struct snippet *snippets;
 };
 
@@ -171,54 +175,67 @@
 
 return cloneString(buffer);
 }
 
 void doEdits(struct edit *edits, char *input, char *outputFile)
 {
 FILE *f = mustOpen(outputFile, "w");
 
 char *outString = input;
 
 for(; edits; edits = edits->next)
     outString = doOneEdit(edits, outString);
 fputs(outString, f);
 fclose(f);
 }
+#endif
 
-void testRewrite(char *script, char *inputFile, char *outputFile)
+void testRewrite(char *inputFile, char *outputFile)
 /* testRewrite - Test harness for cart rewrite tool. */
 {
+/*
+if (script)
+    {
     struct lineFile *lf = lineFileOpen(script, TRUE);
     char *start;
     int size;
     struct edit *edits = NULL;
 
     while (lineFileNext(lf, &start, &size))
         {
         slAddHead(&edits, parseEdit(start, script, lf->lineIx));
         }
-
     slReverse(&edits);
-
     lineFileClose(&lf);
+    }
+else
+*/
+
 
 int count = 0;
-lf = lineFileOpen(inputFile, TRUE);
+    char *start;
+    int size;
+FILE *f = mustOpen(outputFile, "w");
+struct lineFile * lf = lineFileOpen(inputFile, TRUE);
 while (lineFileNext(lf, &start, &size))
     {
     if (count)
         errAbort("input should have only one line with name=value pairs separated by ampersands.");
 
-    doEdits(edits, start, outputFile);
+//    doEdits(edits, start, outputFile);
+    char *output = regexEdit(cartRewrites[0].editArray,cartRewrites[0].numEdits , start, FALSE);
+    fputs(output, f);
+    
     count++;
     }
 }
 
 int main(int argc, char *argv[])
 /* Process command line. */
 {
 optionInit(&argc, argv, options);
-if (argc != 4)
+if (argc != 3)
     usage();
-testRewrite(argv[1], argv[2], argv[3]);
+script = optionVal("script", NULL);
+testRewrite(argv[1], argv[2]);
 return 0;
 }