Complete move map code to page code in render module
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user