| 268 | } |
| 269 | |
| 270 | void Redact(string* value, bool* changed) { |
| 271 | DCHECK(value != NULL); |
| 272 | if (g_rules == NULL || g_rules->empty()) return; |
| 273 | for (Rules::const_iterator rule = g_rules->begin(); rule != g_rules->end(); ++rule) { |
| 274 | if (rule->case_sensitive()) { |
| 275 | if (value->find(rule->trigger) == string::npos) continue; |
| 276 | } else { |
| 277 | if (strcasestr(value->c_str(), rule->trigger.c_str()) == NULL) continue; |
| 278 | } |
| 279 | int replacement_count = re2::RE2::GlobalReplace( |
| 280 | value, rule->search_pattern, rule->replacement); |
| 281 | if (changed != NULL && !*changed) *changed = replacement_count; |
| 282 | } |
| 283 | } |
| 284 | |
| 285 | } |