| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- # Text document API for text
- if WEB?
- type = exports.types['text-composable']
- else
- type = require './text-composable'
- type.api =
- provides: {'text':true}
- # The number of characters in the string
- 'getLength': -> @snapshot.length
- # Get the text contents of a document
- 'getText': -> @snapshot
- 'insert': (pos, text, callback) ->
- op = type.normalize [pos, 'i':text, (@snapshot.length - pos)]
-
- @submitOp op, callback
- op
-
- 'del': (pos, length, callback) ->
- op = type.normalize [pos, 'd':@snapshot[pos...(pos + length)], (@snapshot.length - pos - length)]
- @submitOp op, callback
- op
- _register: ->
- @on 'remoteop', (op) ->
- pos = 0
- for component in op
- if typeof component is 'number'
- pos += component
- else if component.i != undefined
- @emit 'insert', pos, component.i
- pos += component.i.length
- else
- # delete
- @emit 'delete', pos, component.d
- # We don't increment pos, because the position
- # specified is after the delete has happened.
|