Files
monkey/internal/object/module.go
Charles Smith aebbe43999
Some checks failed
Build / build (push) Successful in 10m25s
Publish Image / publish (push) Failing after 39s
Test / build (push) Successful in 11m19s
Fix VM memory allocation optimizations by reducing what we allocate on the heap
2024-03-31 20:44:50 -04:00

44 lines
733 B
Go

package object
import "fmt"
// Module is the module type used to represent a collection of variabels.
type Module struct {
Name string
Attrs Object
}
func (m Module) String() string {
return m.Inspect()
}
func (m Module) Type() Type {
return ModuleType
}
func (m Module) Bool() bool {
return true
}
func (m Module) Inspect() string {
return fmt.Sprintf("<module '%s'>", m.Name)
}
func (m Module) Get(index Object) (Object, error) {
key, ok := index.(Hashable)
if !ok {
return nil, fmt.Errorf("invalid module attribute %s", index.Type())
}
attr, found := m.Attrs.(*Hash).Pairs[key.HashKey()]
if !found {
return Null{}, nil
}
return attr.Value, nil
}
func (m Module) Compare(other Object) int {
return 1
}