Files
monkey/internal/object/module.go
Chuck Smith 3b6df3e813
Some checks failed
Build / build (push) Failing after 5m54s
Publish Image / publish (push) Failing after 44s
Test / build (push) Failing after 5m21s
Refactor VM and operators
2024-03-29 17:59:34 -04:00

44 lines
735 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
}