aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/require/node.js
diff options
context:
space:
mode:
authorArmen Kesablyan2012-02-07 16:55:34 -0800
committerArmen Kesablyan2012-02-07 16:55:34 -0800
commit10f0ad4c15f090b2d0d50d11e4c7aaf291e9eb0e (patch)
tree12b31910a3c7c7fa2ee0b26d8aaa611710e139a5 /node_modules/montage/require/node.js
parent7f8730c3add146f1ba107e6fc22d1f5a8348ed8b (diff)
parent668510892537eaaeb2e11520831d87b44b2489b7 (diff)
downloadninja-10f0ad4c15f090b2d0d50d11e4c7aaf291e9eb0e.tar.gz
Merge branch 'master' of github.com:Motorola-Mobility/ninja-internal into text-tool
Conflicts: _scss/compass_app_log.txt css/ninja.css
Diffstat (limited to 'node_modules/montage/require/node.js')
-rw-r--r--node_modules/montage/require/node.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/node_modules/montage/require/node.js b/node_modules/montage/require/node.js
new file mode 100644
index 00000000..568410cf
--- /dev/null
+++ b/node_modules/montage/require/node.js
@@ -0,0 +1,101 @@
1
2var Require = require("./require");
3var URL = require("../core/url");
4var Promise = require("../core/promise").Promise;
5var FS = require("fs");
6
7var globalEval = eval;
8
9Require.getLocation = function () {
10 return URL.resolve("file:///", process.cwd() + "/");
11};
12
13var urlToPath = function (url) {
14 var parsed = URL.parse(url);
15 return parsed.path;
16};
17
18Require.read = function (url) {
19 var deferred = Promise.defer();
20 var path = urlToPath(url);
21 FS.readFile(path, "utf-8", function (error, text) {
22 if (error) {
23 deferred.reject(new Error(error));
24 } else {
25 deferred.resolve(text);
26 }
27 });
28 return deferred.promise;
29};
30
31// Compiles module text into a function.
32// Can be overriden by the platform to make the engine aware of the source path. Uses sourceURL hack by default.
33Require.Compiler = function (config) {
34 config.scope = config.scope || {};
35 var names = ["require", "exports", "module"];
36 var scopeNames = Object.keys(config.scope);
37 names.push.apply(names, scopeNames);
38 return function(module) {
39 if (module.factory)
40 return module;
41 if (!module.factory && module.text !== void 0) {
42 var factory = globalEval(
43 "(function(" + names.join(",") + "){" +
44 module.text +
45 "\n//*/\n})\n//@ sourceURL=" + module.location
46 );
47 module.factory = function (require, exports, module) {
48 Array.prototype.push.apply(arguments, scopeNames.map(function (name) {
49 return config.scope[name];
50 }));
51 return factory.apply(this, arguments);
52 };
53 // new Function will have its body reevaluated at every call, hence using eval instead
54 // https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope
55 //module.factory = new Function("require", "exports", "module", module.text + "\n//*/\n//@ sourceURL="+module.path);
56 }
57 return module;
58 };
59};
60
61Require.DefaultLoaderConstructor = function(config) {
62 return Require.MappingsLoader(
63 config,
64 Require.ExtensionsLoader(
65 config,
66 Require.PathsLoader(
67 config,
68 Require.CachingLoader(
69 config,
70 Require.Loader(
71 config,
72 Require.NodeLoader(config)
73 )
74 )
75 )
76 )
77 );
78};
79
80Require.NodeLoader = function (config) {
81 return function (url, module) {
82 var id = url.slice(config.location.length);
83 return {
84 type: "native",
85 exports: require(id),
86 location: url
87 }
88 };
89}
90
91Require.main = function () {
92 var require = Require.Sandbox();
93 require.async(process.argv[2]).end();
94};
95
96Require.overlays = ["node", "server", "montage"];
97
98if (require.main === module) {
99 Require.main();
100}
101