| 1234567891011121314151617181920212223242526272829 |
- define [], () ->
- AceShareJsCodec =
- aceRangeToShareJs: (range, lines) ->
- offset = 0
- for line, i in lines
- offset += if i < range.row
- line.length
- else
- range.column
- offset += range.row # Include newlines
- return offset
-
- aceChangeToShareJs: (delta, lines) ->
- offset = AceShareJsCodec.aceRangeToShareJs(delta.start, lines)
- text = delta.lines.join('\n')
- switch delta.action
- when 'insert'
- return { i: text, p: offset }
- when 'remove'
- return { d: text, p: offset }
- else throw new Error "unknown action: #{delta.action}"
-
- shareJsOffsetToAcePosition: (offset, lines) ->
- row = 0
- for line, row in lines
- break if offset <= line.length
- offset -= lines[row].length + 1 # + 1 for newline char
- return {row:row, column:offset}
|