From 98b509441c74598ba43c0f221a25317604e57606 Mon Sep 17 00:00:00 2001 From: probablycorey Date: Fri, 15 Nov 2013 14:05:35 -0800 Subject: [PATCH] Move methods into KeyBinding class --- src/key-binding.coffee | 13 +++++++++++++ src/keymap.coffee | 13 ++----------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/key-binding.coffee b/src/key-binding.coffee index 0ad595238..11b4505d0 100644 --- a/src/key-binding.coffee +++ b/src/key-binding.coffee @@ -33,3 +33,16 @@ class KeyBinding @selector = selector.replace(/!important/g, '') @specificity = specificity(selector) @index = KeyBinding.currentIndex++ + + matches: (keystroke) -> + multiKeystroke = /\s/.test keystroke + if multiKeystroke + keystroke == @keystroke + else + keystroke.split(' ')[0] == @keystroke.split(' ')[0] + + compare: (keyBinding) -> + if keyBinding.specificity == @specificity + keyBinding.index - @index + else + keyBinding.specificity - @specificity diff --git a/src/keymap.coffee b/src/keymap.coffee index 89d5bf2b9..8bb299110 100644 --- a/src/keymap.coffee +++ b/src/keymap.coffee @@ -92,21 +92,12 @@ class Keymap keyBindingsForKeystroke: (keystroke) -> keystroke = KeyBinding.normalizeKeystroke(keystroke) + keyBindings = @keyBindings.filter (keyBinding) -> keyBinding.matches(keystroke) - keyBindings = @getKeyBindings().filter (keyBinding) -> - multiKeystroke = /\s/.test keystroke - if multiKeystroke - keystroke == keyBinding.keystroke - else - keystroke.split(' ')[0] == keyBinding.keystroke.split(' ')[0] keyBindingsMatchingElement: (element, keyBindings=@getKeyBindings()) -> keyBindings = keyBindings.filter ({selector}) -> $(element).closest(selector).length > 0 - keyBindings.sort (a, b) -> - if b.specificity == a.specificity - b.index - a.index - else - b.specificity - a.specificity + keyBindings.sort (a, b) -> a.compare(b) triggerCommandEvent: (element, commandName) -> commandEvent = $.Event(commandName)