Files

36 lines
560 B
Go
Raw Permalink Normal View History

package asciicast
import (
"encoding/json"
"fmt"
)
type Frame struct {
Delay float64
Data []byte
}
func (f *Frame) MarshalJSON() ([]byte, error) {
s, _ := json.Marshal(string(f.Data))
json := fmt.Sprintf(`[%.6f, %s]`, f.Delay, s)
return []byte(json), nil
}
func (f *Frame) UnmarshalJSON(data []byte) error {
var x interface{}
err := json.Unmarshal(data, &x)
if err != nil {
return err
}
f.Delay = x.([]interface{})[0].(float64)
s := []byte(x.([]interface{})[1].(string))
b := make([]byte, len(s))
copy(b, s)
f.Data = b
return nil
}