Cache specificities

This commit is contained in:
Kevin Sawicki
2014-01-10 12:01:56 -08:00
parent ba9f353c4a
commit de25b8ea37

View File

@@ -8,6 +8,15 @@ module.exports =
class KeyBinding
@parser: null
@currentIndex: 1
@specificities: null
@calculateSpecificity: (selector) ->
@specificities ?= {}
value = @specificities[selector]
unless value?
value = specificity(selector)
@specificities[selector] = value
value
@normalizeKeystroke: (keystroke) ->
normalizedKeystroke = keystroke.split(/\s+/).map (keystroke) =>
@@ -33,7 +42,7 @@ class KeyBinding
@command = command
@keystroke = KeyBinding.normalizeKeystroke(keystroke)
@selector = selector.replace(/!important/g, '')
@specificity = specificity(selector)
@specificity = KeyBinding.calculateSpecificity(selector)
@index = KeyBinding.currentIndex++
matches: (keystroke) ->