bool BazelPlaceholderSubstitutions::FindAndReplace()

in tools/common/bazel_substitutions.cc [79:95]


bool BazelPlaceholderSubstitutions::FindAndReplace(
    const std::string &placeholder,
    BazelPlaceholderSubstitutions::PlaceholderResolver &resolver,
    std::string &str) {
  int start = 0;
  bool changed = false;
  while ((start = str.find(placeholder, start)) != std::string::npos) {
    std::string resolved_value = resolver.get();
    if (resolved_value.empty()) {
      return false;
    }
    changed = true;
    str.replace(start, placeholder.length(), resolved_value);
    start += resolved_value.length();
  }
  return changed;
}