char *text;
vector<string> last_text_tokens;
vector<pcrecpp::RE> regexes;
- vector<pcrecpp::RE> wp_namespace_res;
+ vector<pcrecpp::RE> title_regexes;
vector<string> regex_names;
map<string, string> revision_md5; // used for detecting reversions
++pos;
}
- // skip this if the wp_namespace is not in the proscribed list of
- // namespaces
- bool wp_namespace_found = false;
- if (!data->wp_namespace_res.empty()) {
- for (vector<pcrecpp::RE>::iterator r = data->wp_namespace_res.begin(); r != data->wp_namespace_res.end(); ++r) {
- pcrecpp::RE& wp_namespace_re = *r;
- if (wp_namespace_re.PartialMatch(data->title)) {
- wp_namespace_found = true;
+ // look to see if (a) we've passed in a list of /any/ title_regexes
+ // and (b) if all of the title_regex_matches match
+ // if (a) is true and (b) is not, we return
+ bool any_title_regex_match = false;
+ if (!data->title_regexes.empty()) {
+ for (vector<pcrecpp::RE>::iterator r = data->title_regexes.begin(); r != data->title_regexes.end(); ++r) {
+ pcrecpp::RE& title_regex = *r;
+ if (title_regex.PartialMatch(data->title)) {
+ any_title_regex_match = true;
break;
}
}
- if (!wp_namespace_found) {
+ if (!any_title_regex_match) {
return;
}
}
<< " -v verbose mode prints text and comments after each line of tab separated data" << endl
<< " -n name of the following regex (e.g. -n name -r \"...\")" << endl
<< " -r regex to check against additions and deletions" << endl
- << " -t regex(es) to check title against as a way of limiting output to specific namespaces" << endl
+ << " -t parse revisions only from pages whose titles match regex(es)" << endl
<< endl
<< "Takes a wikimedia data dump XML stream on standard in, and produces" << endl
<< "a tab-separated stream of revisions on standard out:" << endl
exit(0);
break;
case 't':
- data.wp_namespace_res.push_back(pcrecpp::RE(optarg, pcrecpp::UTF8()));
+ data.title_regexes.push_back(pcrecpp::RE(optarg, pcrecpp::UTF8()));
break;
}