package formats

import (
	"fmt"

	"github.com/anaminus/rbxmk"
	"github.com/robloxapi/types"
)

// registry contains registered Formats.
var registry []func() rbxmk.Format

// register registers a Format to be returned by All.
func register(f func() rbxmk.Format) {
	registry = append(registry, f)
}

// All returns a list of Formats defined in the package.
func All() []func() rbxmk.Format {
	return registry
}

// cannotEncode returns an error indicating that v cannot be encoded.
func cannotEncode(v interface{}) error {
	if v, ok := v.(types.Value); ok {
		return fmt.Errorf("cannot encode %s", v.Type())
	}
	return fmt.Errorf("cannot encode %T", v)
}

package formats

import (
	"fmt"

	"github.com/anaminus/rbxmk"
)

// registry contains registered Formats.
var registry []func() rbxmk.Format

// register registers a Format to be returned by All.
func register(f func() rbxmk.Format) {
	registry = append(registry, f)
}

// All returns a list of Formats defined in the package.
func All() []func() rbxmk.Format {
	return registry
}

// cannotEncode returns an error indicating that v cannot be encoded.
func cannotEncode(v interface{}) error {
	return fmt.Errorf("cannot encode %T", v)
}

--- 
+++ 
@@ -4,6 +4,7 @@
 	"fmt"
 
 	"github.com/anaminus/rbxmk"
+	"github.com/robloxapi/types"
 )
 
 // registry contains registered Formats.
@@ -21,5 +22,8 @@
 
 // cannotEncode returns an error indicating that v cannot be encoded.
 func cannotEncode(v interface{}) error {
+	if v, ok := v.(types.Value); ok {
+		return fmt.Errorf("cannot encode %s", v.Type())
+	}
 	return fmt.Errorf("cannot encode %T", v)
 }
Use Type method in error message, if possible.
