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