-
Notifications
You must be signed in to change notification settings - Fork 55
/
has-class.js
20 lines (20 loc) · 773 Bytes
/
has-class.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
define(['dojo/has'], function(has){
var tested = {};
return function(){
var test, args = arguments;
for(var i = 0; i < args.length; i++){
var test = args[i];
if(!tested[test]){
tested[test] = true;
var parts = test.match(/^(no-)?(.+?)((-[\d\.]+)(-[\d\.]+)?)?$/), // parse the class name
hasResult = has(parts[2]), // the actual has test
lower = -parts[4]; // lower bound if it is in the form of test-4 or test-4-6 (would be 4)
// if it has a range boundary, compare to see if we are in it
if((lower > 0 ? lower <= hasResult && (-parts[5] || lower) >= hasResult :
!!hasResult) == !parts[1]){ // parts[1] is the no- prefix that can negate the result
document.documentElement.className += ' has-' + test;
}
}
}
};
});