(
name,
handler
)
| 14505 | } |
| 14506 | |
| 14507 | function genHandler( |
| 14508 | name, |
| 14509 | handler |
| 14510 | ) { |
| 14511 | if (!handler) { |
| 14512 | return 'function(){}' |
| 14513 | } |
| 14514 | |
| 14515 | if (Array.isArray(handler)) { |
| 14516 | return ("[" + (handler.map(function (handler) { |
| 14517 | return genHandler(name, handler); |
| 14518 | }).join(',')) + "]") |
| 14519 | } |
| 14520 | |
| 14521 | var isMethodPath = simplePathRE.test(handler.value); |
| 14522 | var isFunctionExpression = fnExpRE.test(handler.value); |
| 14523 | |
| 14524 | if (!handler.modifiers) { |
| 14525 | if (isMethodPath || isFunctionExpression) { |
| 14526 | return handler.value |
| 14527 | } |
| 14528 | /* istanbul ignore if */ |
| 14529 | return ("function($event){" + (handler.value) + "}") // inline statement |
| 14530 | } else { |
| 14531 | var code = ''; |
| 14532 | var genModifierCode = ''; |
| 14533 | var keys = []; |
| 14534 | for (var key in handler.modifiers) { |
| 14535 | if (modifierCode[key]) { |
| 14536 | genModifierCode += modifierCode[key]; |
| 14537 | // left/right |
| 14538 | if (keyCodes[key]) { |
| 14539 | keys.push(key); |
| 14540 | } |
| 14541 | } else if (key === 'exact') { |
| 14542 | var modifiers = (handler.modifiers); |
| 14543 | genModifierCode += genGuard( |
| 14544 | ['ctrl', 'shift', 'alt', 'meta'] |
| 14545 | .filter(function (keyModifier) { |
| 14546 | return !modifiers[keyModifier]; |
| 14547 | }) |
| 14548 | .map(function (keyModifier) { |
| 14549 | return ("$event." + keyModifier + "Key"); |
| 14550 | }) |
| 14551 | .join('||') |
| 14552 | ); |
| 14553 | } else { |
| 14554 | keys.push(key); |
| 14555 | } |
| 14556 | } |
| 14557 | if (keys.length) { |
| 14558 | code += genKeyFilter(keys); |
| 14559 | } |
| 14560 | // Make sure modifiers like prevent and stop get executed after key filtering |
| 14561 | if (genModifierCode) { |
| 14562 | code += genModifierCode; |
| 14563 | } |
| 14564 | var handlerCode = isMethodPath |
no test coverage detected