1 #ifndef __DALI_V8PLUGIN_MODULE_LOADER_H__
2 #define __DALI_V8PLUGIN_MODULE_LOADER_H__
5 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
24 #include <dali/public-api/common/dali-vector.h>
27 #include <module-loader/module.h>
37 * Responsible for executing JavaScript source code.
38 * This includes loading other JavaScript files that may be referenced
39 * inside JavaScript using the 'require' keyword.
43 * A module named with a forward slash is loaded as an absolute path:
44 * E.g. require "/usr/apps/scripts/my_module.js"
46 * A module pre-fixed with a dot slash ( current directory) then the path is relative
47 * to the calling scripts path. E.g.
50 * require "./circle.js"; // load circle.js from same directory as my_first.js
54 * Without a leading '/' or './' the module is loaded from the DALi modules directory or
55 * the applications user defined module directory.
56 * E.g. require "dali-spline.js" // search dali-module directory first, then any user
57 * defined module locations.
72 * non virtual destructor, not intended as a base class
78 * Execute a script from a file
79 * @param[in] fileName file name
81 bool ExecuteScriptFromFile( v8::Isolate* isolate, const std::string& fileName );
86 * @param[in] sourceCode source code to run
87 * @param[in] sourceFileName source file name
89 bool ExecuteScript( v8::Isolate* isolate,
90 const std::string& sourceCode,
91 const std::string& sourceFileName );
95 * Implements JavaScript Require functionality
97 void Require(const v8::FunctionCallbackInfo< v8::Value >& args, v8::Persistent<v8::ObjectTemplate>& globalObjectTemplate );
102 * Compile and run the JavaScript code
103 * @param[in] sourceCode source code to run
104 * @param[in] sourceFileName source file name
106 bool CompileAndRun(v8::Isolate* isolate,
107 const std::string& sourceCode,
108 const std::string& sourceFileName );
111 * Store information about the current script
112 * @param[in] sourceFileName source file name
114 void StoreScriptInfo( const std::string& sourceFileName );
117 * Store module information
118 * @param[in] sourceFileName source file name
119 * @return module object
121 Module* StoreModule( const std::string& path,
122 const std::string& fileName,
123 const std::string& moduleName,
124 v8::Isolate* isolate,
125 v8::Local<v8::Object>& moduleExportsObject );
129 * @param[in] moduleName module name
132 const Module* FindModule( const std::string& moduleName );
136 Dali::Vector< Module*> mModules; ///< vector of modules
137 std::string mCurrentScriptPath; ///< path of the current script being executed (via ExecuteScript).
142 } // namespace V8Plugin
146 #endif // header MODULE_LOADER