61 lines
1.6 KiB
JavaScript
61 lines
1.6 KiB
JavaScript
|
(function() {
|
||
|
var Options;
|
||
|
|
||
|
exports.Options = Options = (function() {
|
||
|
function Options() {
|
||
|
this.https = false;
|
||
|
this.host = null;
|
||
|
this.port = 35729;
|
||
|
this.snipver = null;
|
||
|
this.ext = null;
|
||
|
this.extver = null;
|
||
|
this.mindelay = 1000;
|
||
|
this.maxdelay = 60000;
|
||
|
this.handshake_timeout = 5000;
|
||
|
}
|
||
|
|
||
|
Options.prototype.set = function(name, value) {
|
||
|
if (typeof value === 'undefined') {
|
||
|
return;
|
||
|
}
|
||
|
if (!isNaN(+value)) {
|
||
|
value = +value;
|
||
|
}
|
||
|
return this[name] = value;
|
||
|
};
|
||
|
|
||
|
return Options;
|
||
|
|
||
|
})();
|
||
|
|
||
|
Options.extract = function(document) {
|
||
|
var element, i, j, keyAndValue, len, len1, m, mm, options, pair, ref, ref1, src;
|
||
|
ref = document.getElementsByTagName('script');
|
||
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
element = ref[i];
|
||
|
if ((src = element.src) && (m = src.match(/^[^:]+:\/\/(.*)\/z?livereload\.js(?:\?(.*))?$/))) {
|
||
|
options = new Options();
|
||
|
options.https = src.indexOf("https") === 0;
|
||
|
if (mm = m[1].match(/^([^\/:]+)(?::(\d+))?(\/+.*)?$/)) {
|
||
|
options.host = mm[1];
|
||
|
if (mm[2]) {
|
||
|
options.port = parseInt(mm[2], 10);
|
||
|
}
|
||
|
}
|
||
|
if (m[2]) {
|
||
|
ref1 = m[2].split('&');
|
||
|
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
||
|
pair = ref1[j];
|
||
|
if ((keyAndValue = pair.split('=')).length > 1) {
|
||
|
options.set(keyAndValue[0].replace(/-/g, '_'), keyAndValue.slice(1).join('='));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return options;
|
||
|
}
|
||
|
}
|
||
|
return null;
|
||
|
};
|
||
|
|
||
|
}).call(this);
|