slow hacks
This commit is contained in:
parent
695b45d9c0
commit
92f9474f88
|
@ -0,0 +1,54 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Buffer struct {
|
||||||
|
contents []string
|
||||||
|
filename string
|
||||||
|
cursor Cursor
|
||||||
|
dirty bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewBuffer(filename string) (*Buffer, error) {
|
||||||
|
buffer := &Buffer{
|
||||||
|
contents: []string{""},
|
||||||
|
filename: filename,
|
||||||
|
cursor: Cursor{row: 0, col: 0},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := buffer.Load()
|
||||||
|
return buffer, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (buffer *Buffer) Load() error {
|
||||||
|
if buffer.filename == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
file, err := os.Open(buffer.filename)
|
||||||
|
if err != nil {
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
buffer.contents = []string{}
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
buffer.contents = append(buffer.contents, line)
|
||||||
|
fmt.Printf("'%s'\n", line)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (buffer *Buffer) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
func clamp(int v, int m) int {
|
||||||
|
if v < 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if v > m {
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
type Cursor struct {
|
||||||
|
row int
|
||||||
|
col int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Cursor) clamp(dr, dc, maxRow, maxCol int) Cursor {
|
||||||
|
return Cursor{
|
||||||
|
row: clamp(c.row+dr, maxRow),
|
||||||
|
col: clamp(c.col+dc, maxCol),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Cursor) left(maxRow, maxCol int) Cursor {
|
||||||
|
return c.clamp(0, -1, maxRow, maxCol)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Cursor) right(maxRow, maxCol) Cursor {
|
||||||
|
return c.clamp(0, 1, maxRow, maxCol)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Cursor) up(maxRow, maxCol) Cursor {
|
||||||
|
return c.clamp(-1, 0, maxRow, maxCol)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Cursor) down(maxRow, maxCol) Cursor {
|
||||||
|
return c.clamp(1, 0, maxRow, maxCol)
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
module gitlab.com/kisom/ked
|
||||||
|
|
||||||
|
go 1.12
|
|
@ -0,0 +1,6 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
buffer := NewBuffer("ked.go")
|
||||||
|
buffer.Close()
|
||||||
|
}
|
Loading…
Reference in New Issue