howl.Chunk
buffer = Buffer {}
before_each ->
buffer.text = 'Liñe 1 öf text'
.start_pos returns the start_pos passed in constructor
assert.equal 3, Chunk(buffer, 3, 7).start_pos
.end_pos returns the end_pos passed in constructor
assert.equal 7, Chunk(buffer, 3, 7).end_pos
.empty is true if the chunk is empty (i.e. end_pos is lesser than start_pos)
assert.is_true Chunk(buffer, 3, 2).empty
assert.is_true Chunk(buffer, 1, 0).empty
assert.is_false Chunk(buffer, 1, 1).empty
tostring(chunk) returns .text
chunk = Chunk(buffer, 3, 6)
assert.equal chunk.text, tostring(chunk)
#chunk returns the length of the chunk
chunk = Chunk(buffer, 3, 6)
assert.equal 4, #chunk
.text
is the text in the range [start_pos..end_pos]
assert.equal 'ñe 1', Chunk(buffer, 3, 6).text
is an empty string if the chunk is empty
assert.equal '', Chunk(buffer, 3, 2).text
assert.equal '', Chunk(buffer, 1, 0).text
.text = <string>
.text = <string> replaces the chunk with <string>
chunk = Chunk(buffer, 3, 6)
chunk.text = 'feguard'
assert.equal 'Lifeguard öf text', buffer.text
updates .start_pos and .end_pos to reflect the new chunk
chunk = Chunk(buffer, 1, 6)
chunk.text = 'Zen'
assert.equal 3, chunk.end_pos
assert.equal 'Zen', chunk.text
.styles
is a table of offsets and styles, { start, "style", end [,..]}
styles = { 1, 'keyword', 3 }
buffer._buffer.styling\apply 1, styles
assert.same { 1, 'keyword', 2 }, Chunk(buffer, 2, 2).styles
is an empty table for an empty chunk
assert.same {}, Chunk(buffer, 2, 1).styles
assert.same {}, Chunk(buffer, 1, 0).styles
delete()
deletes the chunk
Chunk(buffer, 1, 5)\delete!
assert.equal '1 öf text', buffer.text
does nothing for an empty chunk
buffer.text = 'hello'
Chunk(buffer, 1, 0)\delete!
Chunk(buffer, 2, 1)\delete!
assert.equal 'hello', buffer.text