// Copyright 2016 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.

#ifndef TOOLS_GN_COMAND_FORMAT_H_
#define TOOLS_GN_COMAND_FORMAT_H_

#include <string>

class Setup;
class SourceFile;

namespace commands {

enum class TreeDumpMode {
  // Normal operation mode. Format the input file.
  kInactive,

  // Output the token tree with indented plain text. For debugging.
  kPlainText,

  // Output the token tree in JSON format. Used for exporting a tree to another
  // program.
  kJSON
};

// The default format width.
extern const size_t kDefaultFormatWidth;

bool FormatJsonToString(const std::string& input,
                        size_t format_width,
                        std::string* output);

bool FormatStringToString(const std::string& input,
                          TreeDumpMode dump_tree,
                          size_t format_width,
                          std::string* output,
                          std::string* dump_output);

}  // namespace commands

#endif  // TOOLS_GN_COMAND_FORMAT_H_
