// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "gn/config_values_extractors.h"

#include "gn/escape.h"

namespace {

class EscapedStringWriter {
 public:
  explicit EscapedStringWriter(const EscapeOptions& escape_options)
      : escape_options_(escape_options) {}

  void operator()(const std::string& s, std::ostream& out) const {
    out << " ";
    EscapeStringToStream(out, s, escape_options_);
  }

 private:
  const EscapeOptions& escape_options_;
};

}  // namespace

void RecursiveTargetConfigStringsToStream(
    RecursiveWriterConfig config,
    const Target* target,
    const std::vector<std::string>& (ConfigValues::*getter)() const,
    const EscapeOptions& escape_options,
    std::ostream& out) {
  RecursiveTargetConfigToStream(config, target, getter,
                                EscapedStringWriter(escape_options), out);
}
