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)
|
all: $(TARGETS)
|
||||||
|
|
||||||
|
%: src/%.go
|
||||||
|
go build $@
|
||||||
|
|
||||||
%: %.go
|
%: %.go
|
||||||
go build $<
|
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