// Copyright 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 "gin/modules/console.h"

#include <stdio.h>

#include "base/strings/string_util.h"
#include "gin/arguments.h"
#include "gin/converter.h"

namespace gin {

namespace {

void Log(const v8::FunctionCallbackInfo<v8::Value>& info) {
  Arguments args(info);
  std::vector<std::string> messages;
  if (!args.GetRemaining(&messages)) {
    args.ThrowError();
    return;
  }
  printf("%s\n", base::JoinString(messages, " ").c_str());
}

}  // namespace

// static
void Console::Register(v8::Isolate* isolate,
                       v8::Local<v8::ObjectTemplate> templ) {
  v8::Local<v8::FunctionTemplate> log_templ =
      v8::FunctionTemplate::New(isolate, Log);
  log_templ->RemovePrototype();

  templ->Set(StringToSymbol(isolate, "log"), log_templ);
}

}  // namespace gin
