yjs/lib/Frameworks/TextYatta.coffee
2014-07-29 21:29:10 +02:00

48 lines
1.2 KiB
CoffeeScript

text_types_uninitialized = require "../Types/TextTypes.coffee"
HistoryBuffer = require "../HistoryBuffer.coffee"
Engine = require "../Engine.coffee"
class TextYatta
constructor: (user_id, Connector)->
@HB = new HistoryBuffer user_id
text_types = text_types_uninitialized @HB
@engine = new Engine @HB, text_types.parser
@connector = new Connector @engine, @HB, text_types.execution_listener
@root_element = @connector.getRootElement()
if not @root_element?
first_word = new text_types.types.Word @HB.getNextOperationIdentifier()
@HB.addOperation(first_word)
first_word.execute()
@root_element = @HB.addOperation(new text_types.types.ReplaceManager first_word, @HB.getNextOperationIdentifier()).execute()
getRootElement: ()->
@root_element
getEngine: ()->
@engine
getConnector: ()->
@connector
getHistoryBuffer: ()->
@HB
getUserId: ()->
@HB.getUserId()
val: ()->
@root_element.val().val()
insertText: (pos, content)->
@root_element.val().insertText pos, content
deleteText: (pos, length)->
@root_element.val().deleteText pos, length
replaceText: (text)->
@root_element.val().replaceText text
module.exports = TextYatta