vm: add MarshalJSON to the Stack
To easily dump it in a known format.
This commit is contained in:
parent
47f66dfbf3
commit
94776b8a1f
2 changed files with 11 additions and 2 deletions
|
@ -9,7 +9,7 @@ type stackItem struct {
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildStackOutput(s *Stack) string {
|
func stackToArray(s *Stack) []stackItem {
|
||||||
items := make([]stackItem, 0, s.Len())
|
items := make([]stackItem, 0, s.Len())
|
||||||
s.Iter(func(e *Element) {
|
s.Iter(func(e *Element) {
|
||||||
items = append(items, stackItem{
|
items = append(items, stackItem{
|
||||||
|
@ -17,7 +17,10 @@ func buildStackOutput(s *Stack) string {
|
||||||
Type: e.value.String(),
|
Type: e.value.String(),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
b, _ := json.MarshalIndent(items, "", " ")
|
func buildStackOutput(s *Stack) string {
|
||||||
|
b, _ := json.MarshalIndent(stackToArray(s), "", " ")
|
||||||
return string(b)
|
return string(b)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package vm
|
package vm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
|
||||||
|
@ -334,3 +335,8 @@ func (s *Stack) popSigElements() ([][]byte, error) {
|
||||||
}
|
}
|
||||||
return elems, nil
|
return elems, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MarshalJSON implements JSON marshalling interface.
|
||||||
|
func (s *Stack) MarshalJSON() ([]byte, error) {
|
||||||
|
return json.Marshal(stackToArray(s))
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue