-
Notifications
You must be signed in to change notification settings - Fork 0
/
RequestInterface.js
147 lines (114 loc) · 4.26 KB
/
RequestInterface.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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
define(function (require, exports, module) {
"use strict";
var MainViewManager = brackets.getModule("view/MainViewManager"),
DocumentManager = brackets.getModule("document/DocumentManager"),
FileUtils = brackets.getModule("file/FileUtils");
var _domain = null;
function getFilePath(file) {
return file.fullPath || file._path;
}
function isValidSCSSFile(filepath) {
return FileUtils.getFileExtension(filepath) === "scss";
}
function sendFileContentToDomain(evt, request) {
var doc = DocumentManager.getOpenDocumentForPath(request.filepath);
if (doc) {
request.fileContent = doc.getText();
} else {
request.err = true;
}
_domain.exec("fileContentResponse", request);
}
function registerDomain(domain) {
function attachDomainHandlers(domain) {
domain.on("requestFileContent", sendFileContentToDomain);
}
attachDomainHandlers(domain);
_domain = domain;
}
function _getGlobalHintsLazily(req) {
var request = extendRequest(req, {}, ["editor", "token", "hints"]);
return _domain.exec("requestGlobalHints", request);
}
function getHintsForRequest(req, params) {
var hints = $.Deferred(),
request = extendRequest(req, params, ["editor", "token"]);
var result = _domain.exec("requestHints", request);
result.done(function (res) {
hints.resolve(res.hints);
//Lazy load the global hints if
//exists on disc
var doc = req.editor.document;
if (!doc.isUntitled || request.type !== "atrule") {
request.import = res.import;
_getGlobalHintsLazily(request)
.done(function (hints) {
req.updateHints(hints);
});
}
}).fail(function () {
hints.reject();
});
return hints.promise();
}
function _getValidScssFilesFromWorkingSet() {
var filelist = MainViewManager.getAllOpenFiles();
filelist = filelist.map(function (file) {
return getFilePath(file);
}).filter(function (filepath) {
return isValidSCSSFile(filepath);
});
return filelist;
}
function markFileForReanalysis(document) {
var filepath = getFilePath(document.file);
if (isValidSCSSFile(filepath)) {
_domain.exec("markFileForReanalysis", filepath);
}
}
function initializeDomain() {
var filelist = _getValidScssFilesFromWorkingSet();
return _domain.exec("initializeDomain", filelist);
}
function updateOpenFileList(document) {
var filepath = getFilePath(document.file);
if (isValidSCSSFile(filepath)) {
var filestatus = {
filepath: filepath,
isDirty: document.isDirty
};
_domain.exec("updateOpenFileList", filestatus);
}
}
function syncDomain(files) {
files = files.map(function (file) {
return getFilePath(file);
}).filter(function (filepath) {
return isValidSCSSFile(filepath);
});
_domain.exec("syncDomain", files);
}
function updateGlobalContext(file) {
var filepath = getFilePath(file);
if (isValidSCSSFile(filepath)) {
_domain.exec("updateGlobalContext", filepath);
}
}
function extendRequest(req, defaultParams, filter) {
var request = defaultParams;
for (var key in req) {
if (req.hasOwnProperty(key) && filter.indexOf(key) === -1) {
request[key] = req[key];
}
}
return request;
}
exports.updateOpenFileList = updateOpenFileList;
exports.initializeDomain = initializeDomain;
exports.registerDomain = registerDomain;
exports.getHintsForRequest = getHintsForRequest;
exports.extendRequest = extendRequest;
exports.markFileForReanalysis = markFileForReanalysis;
exports.updateGlobalContext = updateGlobalContext;
exports.syncDomain = syncDomain;
});