( name, handler )
| 8393 | } |
| 8394 | |
| 8395 | function genHandler ( |
| 8396 | name, |
| 8397 | handler |
| 8398 | ) { |
| 8399 | if (!handler) { |
| 8400 | return 'function(){}' |
| 8401 | } |
| 8402 | |
| 8403 | if (Array.isArray(handler)) { |
| 8404 | return ("[" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + "]") |
| 8405 | } |
| 8406 | |
| 8407 | var isMethodPath = simplePathRE.test(handler.value); |
| 8408 | var isFunctionExpression = fnExpRE.test(handler.value); |
| 8409 | |
| 8410 | if (!handler.modifiers) { |
| 8411 | return isMethodPath || isFunctionExpression |
| 8412 | ? handler.value |
| 8413 | : ("function($event){" + (handler.value) + "}") // inline statement |
| 8414 | } else { |
| 8415 | var code = ''; |
| 8416 | var genModifierCode = ''; |
| 8417 | var keys = []; |
| 8418 | for (var key in handler.modifiers) { |
| 8419 | if (modifierCode[key]) { |
| 8420 | genModifierCode += modifierCode[key]; |
| 8421 | // left/right |
| 8422 | if (keyCodes[key]) { |
| 8423 | keys.push(key); |
| 8424 | } |
| 8425 | } else { |
| 8426 | keys.push(key); |
| 8427 | } |
| 8428 | } |
| 8429 | if (keys.length) { |
| 8430 | code += genKeyFilter(keys); |
| 8431 | } |
| 8432 | // Make sure modifiers like prevent and stop get executed after key filtering |
| 8433 | if (genModifierCode) { |
| 8434 | code += genModifierCode; |
| 8435 | } |
| 8436 | var handlerCode = isMethodPath |
| 8437 | ? handler.value + '($event)' |
| 8438 | : isFunctionExpression |
| 8439 | ? ("(" + (handler.value) + ")($event)") |
| 8440 | : handler.value; |
| 8441 | return ("function($event){" + code + handlerCode + "}") |
| 8442 | } |
| 8443 | } |
| 8444 | |
| 8445 | function genKeyFilter (keys) { |
| 8446 | return ("if(!('button' in $event)&&" + (keys.map(genFilterCode).join('&&')) + ")return null;") |
no test coverage detected