fix bug and invoke regex search in first revision
authorBenjamin Mako Hill <mako@atdot.cc>
Mon, 2 May 2011 17:59:02 +0000 (13:59 -0400)
committerBenjamin Mako Hill <mako@atdot.cc>
Mon, 2 May 2011 17:59:02 +0000 (13:59 -0400)
Regex search was only being called in diffs. Of course, if something is
added in the very first revision, it will never show up in a diff. This
was resulting in deletions that don't show up as additions. I've patched
the code so that the first revision is treated as one big addition.

wikiq.cpp

index 57d97fa98def696ba549db07f6402c147a6b1834..ee10644391969e0517e2c35394d3b65e2db455be 100644 (file)
--- a/wikiq.cpp
+++ b/wikiq.cpp
@@ -254,7 +254,9 @@ write_row(revisionData *data)
     vector<bool> regex_matches_adds;
     vector<bool> regex_matches_dels;
 
-    if (!data->last_text_tokens.empty()) {
+    if (data->last_text_tokens.empty()) {
+        additions = data->text;
+    } else {
         // do the diff
         
         dtl::Diff< string, vector<string> > d(data->last_text_tokens, text_tokens);
@@ -274,25 +276,22 @@ write_row(revisionData *data)
                 break;
             }
         }
-
-        if (!additions.empty()) {
-            //cout << "ADD: " << additions << endl;
-            for (vector<pcrecpp::RE>::iterator r = data->regexes.begin(); r != data->regexes.end(); ++r) {
-                pcrecpp::RE& regex = *r;
-                regex_matches_adds.push_back(regex.PartialMatch(additions));
-            }
+    }
+    
+    if (!additions.empty()) {
+        //cout << "ADD: " << additions << endl;
+        for (vector<pcrecpp::RE>::iterator r = data->regexes.begin(); r != data->regexes.end(); ++r) {
+            pcrecpp::RE& regex = *r;
+            regex_matches_adds.push_back(regex.PartialMatch(additions));
         }
+    }
 
-        if (!deletions.empty()) {
-            //cout << "DEL: " << deletions << endl;
-            for (vector<pcrecpp::RE>::iterator r = data->regexes.begin(); r != data->regexes.end(); ++r) {
-                pcrecpp::RE& regex = *r;
-                regex_matches_dels.push_back(regex.PartialMatch(deletions));
-            }
+    if (!deletions.empty()) {
+        //cout << "DEL: " << deletions << endl;
+        for (vector<pcrecpp::RE>::iterator r = data->regexes.begin(); r != data->regexes.end(); ++r) {
+            pcrecpp::RE& regex = *r;
+            regex_matches_dels.push_back(regex.PartialMatch(deletions));
         }
-
-        // apply regex to the diff
-
     }
 
     data->last_text_tokens = text_tokens;

Benjamin Mako Hill || Want to submit a patch?