package nori import ( "bytes" "fmt" "io" "os" "github.com/spf13/afero" "github.com/suapapa/go_hangul/encoding/cp949" ) func New() *Nori { return &Nori{} } func FromFile(fp string) (*Nori, error) { file, err := os.Open(fp) if err != nil { return nil, err } defer file.Close() fs := afero.NewMemMapFs() f, _ := fs.OpenFile("_", os.O_TRUNC|os.O_CREATE, 0o740) io.Copy(f, file) f.Seek(0, io.SeekStart) return Decode(f) } func Decode(r io.ReadSeeker) (*Nori, error) { nori := New() err := nori.Decode(r) return nori, err } func GetAnimationNames(n *Nori) (map[string]int, error) { names := make(map[string]int, n.AnimationCount) for i := range n.Animations { anim := n.Animations[i] title, codepageError := cp949.From(anim.Title[:]) if codepageError != nil { return nil, fmt.Errorf("couldn't convert title of animation %d", i) } cleanTitle := string(bytes.SplitN(title[:], []byte{0}, 2)[0]) names[cleanTitle] = i } return names, nil }