mirror of https://github.com/dirtbags/fluffy.git
Start at Gapstr
This commit is contained in:
parent
6ada731c44
commit
c992230e54
3
Makefile
3
Makefile
|
@ -7,6 +7,9 @@ export GOPATH
|
|||
|
||||
all: $(TARGETS)
|
||||
|
||||
%: src/%.go
|
||||
go build $@
|
||||
|
||||
%: %.go
|
||||
go build $<
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
all:
|
||||
%:
|
||||
$(MAKE) -C .. $@
|
|
@ -0,0 +1,14 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"netarch"
|
||||
)
|
||||
|
||||
func main() {
|
||||
g := new(netarch.Gapstr)
|
||||
g = g.AppendString("hello")
|
||||
g = g.AppendGap(12)
|
||||
g = g.AppendString("world")
|
||||
fmt.Println("hi", g.String())
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package netarch
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
)
|
||||
|
||||
type chunk interface{}
|
||||
|
||||
type Gapstr struct {
|
||||
chunks []chunk
|
||||
}
|
||||
|
||||
func GapstrOfString(s string) *Gapstr {
|
||||
return &Gapstr{[]chunk{s}}
|
||||
}
|
||||
|
||||
func (g *Gapstr) appendChunk(c chunk) *Gapstr {
|
||||
return &Gapstr{append(g.chunks, c)}
|
||||
}
|
||||
|
||||
func (g *Gapstr) AppendString(s string) *Gapstr {
|
||||
return g.appendChunk(s)
|
||||
}
|
||||
|
||||
func (g *Gapstr) AppendGap(len int) *Gapstr {
|
||||
return g.appendChunk(len)
|
||||
}
|
||||
|
||||
func (g *Gapstr) String() string {
|
||||
var b bytes.Buffer
|
||||
for _, c := range g.chunks {
|
||||
switch c.(type) {
|
||||
case int:
|
||||
b.Write(bytes.Repeat([]byte{0}, c.(int)))
|
||||
case string:
|
||||
b.WriteString(c.(string))
|
||||
}
|
||||
}
|
||||
return b.String()
|
||||
}
|
Loading…
Reference in New Issue