Complete move map code to page code in render module

This commit is contained in:
lash
2023-04-10 15:26:18 +01:00
parent 765bc2a269
commit 0831a4ea53
11 changed files with 61 additions and 36 deletions

View File

@@ -103,10 +103,14 @@ func applyTarget(target []byte, st *state.State, ca cache.Memory, ctx context.Co
switch target[0] {
case '_':
sym, err = st.Up()
ca.Pop()
if err != nil {
return sym, idx, err
}
err = ca.Pop()
if err != nil {
return sym, idx, err
}
case '>':
idx, err = st.Next()
if err != nil {
@@ -118,14 +122,31 @@ func applyTarget(target []byte, st *state.State, ca cache.Memory, ctx context.Co
return sym, idx, err
}
case '^':
_, err := st.SetFlag(state.FLAG_TERMINATE)
if err != nil {
return sym, idx, err
notTop := true
for notTop {
notTop, err := st.Top()
if notTop {
break
}
sym, err = st.Up()
if err != nil {
return sym, idx, err
}
err = ca.Pop()
if err != nil {
return sym, idx, err
}
}
default:
sym = string(target)
st.Down(sym)
ca.Push()
err := st.Down(sym)
if err != nil {
return sym, idx, err
}
err = ca.Push()
if err != nil {
return sym, idx, err
}
idx = 0
}
return sym, idx, nil

View File

@@ -26,6 +26,7 @@ func NewVm(st *state.State, rs resource.Resource, ca cache.Memory, sizer *render
st: st,
rs: rs,
ca: ca,
pg: render.NewPage(ca, rs),
sizer: sizer,
}
vmi.Reset()
@@ -34,7 +35,8 @@ func NewVm(st *state.State, rs resource.Resource, ca cache.Memory, sizer *render
func(vmi *Vm) Reset() {
vmi.mn = render.NewMenu()
vmi.pg = render.NewPage(vmi.ca, vmi.rs).WithMenu(vmi.mn)
vmi.pg.Reset()
vmi.pg = vmi.pg.WithMenu(vmi.mn) //render.NewPage(vmi.ca, vmi.rs).WithMenu(vmi.mn)
if vmi.sizer != nil {
vmi.pg = vmi.pg.WithSizer(vmi.sizer)
}

View File

@@ -113,7 +113,9 @@ func TestRunLoadRender(t *testing.T) {
var err error
b := NewLine(nil, LOAD, []string{"one"}, []byte{0x0a}, nil)
b = NewLine(b, MAP, []string{"one"}, nil, nil)
b = NewLine(b, LOAD, []string{"two"}, []byte{0x0a}, nil)
b = NewLine(b, MAP, []string{"two"}, nil, nil)
b = NewLine(b, HALT, nil, nil, nil)
b, err = vm.Run(b, context.TODO())
if err != nil {
@@ -129,6 +131,7 @@ func TestRunLoadRender(t *testing.T) {
}
b = NewLine(nil, LOAD, []string{"two"}, []byte{0x0a}, nil)
b = NewLine(b, MAP, []string{"two"}, nil, nil)
b = NewLine(b, HALT, nil, nil, nil)
b, err = vm.Run(b, context.TODO())
if err != nil {