-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathqHint.js
67 lines (58 loc) · 2.01 KB
/
qHint.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
(function(window) {
// modified version of XHR script by PPK, http://www.quirksmode.org/js/xmlhttp.html
function sendRequest(url,callback) {
var req = createXMLHTTPObject();
if (!req) return;
var method = "GET";
req.open(method,url,true);
req.setRequestHeader('User-Agent','XMLHTTP/1.0');
req.onreadystatechange = function () {
if (req.readyState != 4) return;
if (req.status != 200 && req.status != 304) {
alert("HTTP error " + req.status + " occured.");
return;
}
callback(req);
};
if (req.readyState == 4) return;
req.send();
}
var XMLHttpFactories = [
function () { return new XMLHttpRequest(); },
function () { return new ActiveXObject("Msxml2.XMLHTTP"); },
function () { return new ActiveXObject("Msxml3.XMLHTTP"); },
function () { return new ActiveXObject("Microsoft.XMLHTTP"); }
];
function createXMLHTTPObject() {
for (var i = 0; i < XMLHttpFactories.length; i++) {
try {
return XMLHttpFactories[i]();
} catch (e) {}
}
return false;
}
// the qHint function
window.qHint = function (name, sourceFile, options) {
function validateFile(source) {
var i, len, err,
result = JSHINT(source, options);
ok(result);
if (result) {
return;
}
for (i = 0, len = JSHINT.errors.length; i < len; i++) {
err = JSHINT.errors[i];
if (!err) {
continue;
}
ok(false, err.reason + " on line " + err.line + ", character " + err.character);
}
}
return asyncTest(name, function() {
sendRequest(sourceFile, function(source) {
start();
validateFile(source.responseText);
});
});
};
})(window, undefined);