No ticket. Abstract conditional hook definition.

This commit is contained in:
Michał Gołębiowski
2013-09-11 02:45:11 +02:00
parent 4ded9be72a
commit 0b9f034382
3 changed files with 52 additions and 40 deletions

33
src/css/addGetHookIf.js Normal file
View File

@@ -0,0 +1,33 @@
define( function() {
function addGetHookIf( hookVar, conditionFn, hookFn ) {
// Define the hook, we'll check on the first run if it's really needed.
hookVar = {
get: function() {
var condition = conditionFn();
if ( condition == null ) {
// The test was not ready at this point; screw the hook this time
// but check again when needed next time.
return;
}
if ( condition ) {
// Hook not needed (or it's not possible to use it due to missing dependency),
// remove it.
// Since there are no other hooks for marginRight, remove the whole object.
delete hookVar.get;
return;
}
// Hook needed; redefine it so that the support test is not executed again.
hookVar.get = hookFn;
return hookVar.get.apply( hookVar, arguments );
}
};
}
return addGetHookIf;
});