Index: samples/shell.cc |
=================================================================== |
--- samples/shell.cc (revision 1738) |
+++ samples/shell.cc (working copy) |
@@ -38,6 +38,7 @@ |
bool print_result, |
bool report_exceptions); |
v8::Handle<v8::Value> Print(const v8::Arguments& args); |
+v8::Handle<v8::Value> Read(const v8::Arguments& args); |
v8::Handle<v8::Value> Load(const v8::Arguments& args); |
v8::Handle<v8::Value> Quit(const v8::Arguments& args); |
v8::Handle<v8::Value> Version(const v8::Arguments& args); |
@@ -52,6 +53,8 @@ |
v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New(); |
// Bind the global 'print' function to the C++ Print callback. |
global->Set(v8::String::New("print"), v8::FunctionTemplate::New(Print)); |
+ // Bind the global 'read' function to the C++ Read callback. |
+ global->Set(v8::String::New("read"), v8::FunctionTemplate::New(Read)); |
// Bind the global 'load' function to the C++ Load callback. |
global->Set(v8::String::New("load"), v8::FunctionTemplate::New(Load)); |
// Bind the 'quit' function |
@@ -135,6 +138,25 @@ |
} |
+// The callback that is invoked by v8 whenever the JavaScript 'read' |
+// function is called. This function loads the content of the file named in |
+// the argument into a JavaScript string. |
+v8::Handle<v8::Value> Read(const v8::Arguments& args) { |
+ if (args.Length() != 1) { |
+ return v8::ThrowException(v8::String::New("Bad parameters")); |
+ } |
+ v8::String::Utf8Value file(args[0]); |
+ if (*file == NULL) { |
+ return v8::ThrowException(v8::String::New("Error loading file")); |
+ } |
+ v8::Handle<v8::String> source = ReadFile(*file); |
+ if (source.IsEmpty()) { |
+ return v8::ThrowException(v8::String::New("Error loading file")); |
+ } |
+ return source; |
+} |
+ |
+ |
// The callback that is invoked by v8 whenever the JavaScript 'load' |
// function is called. Loads, compiles and executes its argument |
// JavaScript file. |