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("", 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 }