mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-28 23:19:42 -08:00
134 lines
3.6 KiB
JavaScript
134 lines
3.6 KiB
JavaScript
(function() {
|
|
var ffSupport, formats, getOrderedMatches, hasMatches, isFF, isIE, isOpera, isSafari, log, makeArray, operaSupport, safariSupport, stringToArgs, _log;
|
|
if (!(window.console && window.console.log)) {
|
|
return;
|
|
}
|
|
log = function() {
|
|
var args;
|
|
args = [];
|
|
makeArray(arguments).forEach(function(arg) {
|
|
if (typeof arg === 'string') {
|
|
return args = args.concat(stringToArgs(arg));
|
|
} else {
|
|
return args.push(arg);
|
|
}
|
|
});
|
|
return _log.apply(window, args);
|
|
};
|
|
_log = function() {
|
|
return console.log.apply(console, makeArray(arguments));
|
|
};
|
|
makeArray = function(arrayLikeThing) {
|
|
return Array.prototype.slice.call(arrayLikeThing);
|
|
};
|
|
formats = [
|
|
{
|
|
regex: /\*([^\*]+)\*/,
|
|
replacer: function(m, p1) {
|
|
return "%c" + p1 + "%c";
|
|
},
|
|
styles: function() {
|
|
return ['font-style: italic', ''];
|
|
}
|
|
}, {
|
|
regex: /\_([^\_]+)\_/,
|
|
replacer: function(m, p1) {
|
|
return "%c" + p1 + "%c";
|
|
},
|
|
styles: function() {
|
|
return ['font-weight: bold', ''];
|
|
}
|
|
}, {
|
|
regex: /\`([^\`]+)\`/,
|
|
replacer: function(m, p1) {
|
|
return "%c" + p1 + "%c";
|
|
},
|
|
styles: function() {
|
|
return ['background: rgb(255, 255, 219); padding: 1px 5px; border: 1px solid rgba(0, 0, 0, 0.1)', ''];
|
|
}
|
|
}, {
|
|
regex: /\[c\=(?:\"|\')?((?:(?!(?:\"|\')\]).)*)(?:\"|\')?\]((?:(?!\[c\]).)*)\[c\]/,
|
|
replacer: function(m, p1, p2) {
|
|
return "%c" + p2 + "%c";
|
|
},
|
|
styles: function(match) {
|
|
return [match[1], ''];
|
|
}
|
|
}
|
|
];
|
|
hasMatches = function(str) {
|
|
var _hasMatches;
|
|
_hasMatches = false;
|
|
formats.forEach(function(format) {
|
|
if (format.regex.test(str)) {
|
|
return _hasMatches = true;
|
|
}
|
|
});
|
|
return _hasMatches;
|
|
};
|
|
getOrderedMatches = function(str) {
|
|
var matches;
|
|
matches = [];
|
|
formats.forEach(function(format) {
|
|
var match;
|
|
match = str.match(format.regex);
|
|
if (match) {
|
|
return matches.push({
|
|
format: format,
|
|
match: match
|
|
});
|
|
}
|
|
});
|
|
return matches.sort(function(a, b) {
|
|
return a.match.index - b.match.index;
|
|
});
|
|
};
|
|
stringToArgs = function(str) {
|
|
var firstMatch, matches, styles;
|
|
styles = [];
|
|
while (hasMatches(str)) {
|
|
matches = getOrderedMatches(str);
|
|
firstMatch = matches[0];
|
|
str = str.replace(firstMatch.format.regex, firstMatch.format.replacer);
|
|
styles = styles.concat(firstMatch.format.styles(firstMatch.match));
|
|
}
|
|
return [str].concat(styles);
|
|
};
|
|
isSafari = function() {
|
|
return /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
|
|
};
|
|
isOpera = function() {
|
|
return /OPR/.test(navigator.userAgent) && /Opera/.test(navigator.vendor);
|
|
};
|
|
isFF = function() {
|
|
return /Firefox/.test(navigator.userAgent);
|
|
};
|
|
isIE = function() {
|
|
return /MSIE/.test(navigator.userAgent);
|
|
};
|
|
safariSupport = function() {
|
|
var m;
|
|
m = navigator.userAgent.match(/AppleWebKit\/(\d+)\.(\d+)(\.|\+|\s)/);
|
|
if (!m) {
|
|
return false;
|
|
}
|
|
return 537.38 <= parseInt(m[1], 10) + (parseInt(m[2], 10) / 100);
|
|
};
|
|
operaSupport = function() {
|
|
var m;
|
|
m = navigator.userAgent.match(/OPR\/(\d+)\./);
|
|
if (!m) {
|
|
return false;
|
|
}
|
|
return 15 <= parseInt(m[1], 10);
|
|
};
|
|
ffSupport = function() {
|
|
return window.console.firebug || window.console.exception;
|
|
};
|
|
if (isIE() || (isFF() && !ffSupport()) || (isOpera() && !operaSupport()) || (isSafari() && !safariSupport())) {
|
|
window.log = _log;
|
|
} else {
|
|
window.log = log;
|
|
}
|
|
window.log.l = _log;
|
|
}).call(this); |