Add editor packages
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package line
|
||||
|
||||
import "strings"
|
||||
|
||||
func (l *Line) Append(s string) {
|
||||
l.data = l.data + s
|
||||
}
|
||||
|
||||
func (l *Line) DeleteRune(index int) (deleted rune) {
|
||||
if index < 0 || index >= len(l.data) {
|
||||
return
|
||||
}
|
||||
|
||||
var str strings.Builder
|
||||
for i, r := range l.data {
|
||||
if i == index {
|
||||
deleted = r
|
||||
continue
|
||||
}
|
||||
str.WriteRune(r)
|
||||
}
|
||||
|
||||
l.data = str.String()
|
||||
|
||||
return deleted
|
||||
}
|
||||
|
||||
func (l *Line) Insert(index int, nr rune) {
|
||||
if index < 0 || index > len(l.data) {
|
||||
return
|
||||
}
|
||||
|
||||
var str strings.Builder
|
||||
switch {
|
||||
|
||||
// Handle empty lines and the end of the line.
|
||||
case index == len(l.data):
|
||||
str.WriteString(l.data)
|
||||
str.WriteRune(nr)
|
||||
|
||||
default:
|
||||
for i, r := range l.data {
|
||||
if i == index {
|
||||
str.WriteRune(nr)
|
||||
}
|
||||
str.WriteRune(r)
|
||||
}
|
||||
}
|
||||
|
||||
l.data = str.String()
|
||||
}
|
||||
Reference in New Issue
Block a user