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.(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 }