Extract EventEmitter mixin

This commit is contained in:
Nathan Sobo
2012-02-08 13:50:35 -07:00
parent 0daecb6047
commit ce90cbc0ce
4 changed files with 19 additions and 15 deletions

View File

@@ -1,6 +1,7 @@
_ = require 'underscore'
fs = require 'fs'
Range = require 'range'
EventEmitter = require 'event-emitter'
module.exports =
class Buffer
@@ -90,14 +91,6 @@ class Buffer
if not @path then throw new Error("Tried to save buffer with no url")
fs.write @path, @getText()
on: (eventName, handler) ->
@eventHandlers ?= {}
@eventHandlers[eventName] ?= []
@eventHandlers[eventName].push(handler)
trigger: (eventName, event) ->
@eventHandlers?[eventName]?.forEach (handler) -> handler(event)
modeName: ->
extension = if @path then @path.split('/').pop().split('.').pop() else null
switch extension
@@ -109,3 +102,4 @@ class Buffer
when 'css' then 'css'
else 'text'
_.extend(Buffer.prototype, EventEmitter)

View File

@@ -0,0 +1,8 @@
module.exports =
on: (eventName, handler) ->
@eventHandlers ?= {}
@eventHandlers[eventName] ?= []
@eventHandlers[eventName].push(handler)
trigger: (eventName, event) ->
@eventHandlers?[eventName]?.forEach (handler) -> handler(event)

View File

@@ -1,4 +1,5 @@
_ = require 'underscore'
EventEmitter = require 'event-emitter'
module.exports =
class Highlighter
@@ -59,10 +60,4 @@ class Highlighter
tokensForRow: (row) ->
@lines[row].tokens
on: (eventName, handler) ->
@eventHandlers ?= {}
@eventHandlers[eventName] ?= []
@eventHandlers[eventName].push(handler)
trigger: (eventName, event) ->
@eventHandlers?[eventName]?.forEach (handler) -> handler(event)
_.extend(Highlighter.prototype, EventEmitter)

View File

@@ -1,4 +1,7 @@
_ = require 'underscore'
Point = require 'point'
EventEmitter = require 'event-emitter'
getWordRegex = -> /\b[^\s]+/g
module.exports =
@@ -6,6 +9,8 @@ class LineWrapper
constructor: (@maxLength, @highlighter) ->
@buffer = @highlighter.buffer
@buildWrappedLines()
@highlighter.on 'change', (e) =>
@wrappedLines[e.oldRange.start.row] = @buildWrappedLineForBufferRow(e.newRange.start.row)
setMaxLength: (@maxLength) ->
@buildWrappedLines()
@@ -83,3 +88,5 @@ class LineWrapper
for screenLine in wrappedLine.screenLines
return screenLine if currentScreenRow == screenRow
currentScreenRow++
_.extend(LineWrapper.prototype, EventEmitter)