487{
488 bool replace = false;
489 std::string res;
490 const char *cp = content.c_str();
491 const char *cp0 = cp;
492 while (*cp)
493 {
494 if (html_context && !strncmp(cp, """, 6))
495 {
496 cp += 6;
497 res.append(cp0, cp - cp0);
498 cp0 = cp;
499 while (*cp)
500 {
501 if (!strncmp(cp, """, 6))
502 break;
503 if (*cp == '\n')
504 break;
505 cp++;
506 }
507 if (!*cp)
508 break;
509 std::string s(cp0, cp - cp0);
510 if (ruleptr->test_patterns(vars, s, true, skip_list))
511 replace = true;
512 cp0 = cp;
513 res.append(s);
514 }
515 else if (*cp == '"' || *cp == '\'')
516 {
517 int m = *cp;
518 cp++;
519 res.append(cp0, cp - cp0);
520 cp0 = cp;
521 while (*cp)
522 {
523 if (cp[-1] != '\\' && *cp == m)
524 break;
525 if (*cp == '\n')
526 break;
527 cp++;
528 }
529 if (!*cp)
530 break;
531 std::string s(cp0, cp - cp0);
532 if (ruleptr->test_patterns(vars, s, true, skip_list))
533 replace = true;
534 cp0 = cp;
535 res.append(s);
536 }
537 else if (*cp == '/' && cp[1] == '/')
538 {
539 while (cp[1] && cp[1] != '\n')
540 cp++;
541 }
542 cp++;
543 }
544 res.append(cp0, cp - cp0);
545 content = res;
546 return replace;
547}