Files
monkey/internal/object/module.go
csmith 99f7553d67
Some checks failed
Publish Image / publish (push) Waiting to run
Test / build (push) Waiting to run
Build / build (push) Has been cancelled
refactor objects
2024-04-01 17:34:10 -04:00

44 lines
728 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.(Hasher)
if !ok {
return nil, fmt.Errorf("invalid module attribute %s", index.Type())
}
attr, found := m.Attrs.(*Hash).Pairs[key.Hash()]
if !found {
return Null{}, nil
}
return attr.Value, nil
}
func (m Module) Compare(other Object) int {
return 1
}