This repository has been archived by the owner on Sep 6, 2021. It is now read-only.
/
Global.js
113 lines (97 loc) · 4.74 KB
/
Global.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
* Copyright (c) 2012 Adobe Systems Incorporated. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
/*jslint vars: true, plusplus: true, devel: true, nomen: true, indent: 4, maxerr: 50 */
/*global define */
/**
* Initializes the global "brackets" variable and it's properties.
* Modules should not access the global.brackets object until either
* (a) the module requires this module, i.e. require("utils/Global") or
* (b) the module receives a "appReady" callback from the utils/AppReady module.
*/
define(function (require, exports, module) {
"use strict";
var configJSON = require("text!config.json");
// Define core brackets namespace if it isn't already defined
//
// We can't simply do 'brackets = {}' to define it in the global namespace because
// we're in "use strict" mode. Most likely, 'window' will always point to the global
// object when this code is running. However, in case it isn't (e.g. if we're running
// inside Node for CI testing) we use this trick to get the global object.
//
// Taken from:
// http://stackoverflow.com/questions/3277182/how-to-get-the-global-object-in-javascript
var Fn = Function, global = (new Fn("return this"))();
if (!global.brackets) {
global.brackets = {};
}
// Parse src/config.json
try {
global.brackets.metadata = JSON.parse(configJSON);
global.brackets.config = global.brackets.metadata.config;
} catch (err) {
console.log(err);
}
// Uncomment the following line to force all low level file i/o routines to complete
// asynchronously. This should only be done for testing/debugging.
// NOTE: Make sure this line is commented out again before committing!
//brackets.forceAsyncCallbacks = true;
// Load native shell when brackets is run in a native shell rather than the browser
// TODO: (issue #266) load conditionally
global.brackets.shellAPI = require("utils/ShellAPI");
global.brackets.inBrowser = !global.brackets.hasOwnProperty("fs");
if (global.navigator.platform === "MacIntel" || global.navigator.platform === "MacPPC") {
global.brackets.platform = "mac";
} else if (global.navigator.platform.indexOf("Linux") >= 0) {
global.brackets.platform = "linux";
} else {
global.brackets.platform = "win";
}
global.brackets.getLocale = function () {
// By default use the locale that was determined in brackets.js
return global.localStorage.getItem("locale") || global.require.s.contexts._.config.locale;
};
global.brackets.setLocale = function (locale) {
if (locale) {
global.localStorage.setItem("locale", locale);
} else {
global.localStorage.removeItem("locale");
}
};
// Create empty app namespace if running in-browser
if (!global.brackets.app) {
global.brackets.app = {};
}
// Loading extensions requires creating new require.js contexts, which
// requires access to the global 'require' object that always gets hidden
// by the 'require' in the AMD wrapper. We store this in the brackets
// object here so that the ExtensionLoader doesn't have to have access to
// the global object.
global.brackets.libRequire = global.require;
// Also store our current require.js context (the one that loads brackets
// core modules) so that extensions can use it.
// Note: we change the name to "getModule" because this won't do exactly
// the same thing as 'require' in AMD-wrapped modules. The extension will
// only be able to load modules that have already been loaded once.
global.brackets.getModule = require;
exports.global = global;
});