diff --git a/class.go b/class.go index eabd13b..b4d429d 100644 --- a/class.go +++ b/class.go @@ -27,6 +27,8 @@ func (mrb *State) ClassOf(v Value) *RClass { if v == false { return mrb.falseClass } + + return mrb.trueClass } return nil diff --git a/mruby.go b/mruby.go index afb4fc6..818f29d 100644 --- a/mruby.go +++ b/mruby.go @@ -1,8 +1,6 @@ package mruby import ( - "fmt" - "github.com/elct9620/mruby-go/stack" ) @@ -29,6 +27,7 @@ type State struct { context *context falseClass *RClass + trueClass *RClass objectClass *RClass topSelf *RObject @@ -39,7 +38,6 @@ func New() *State { context: &context{ callinfo: stack.New[*callinfo](), }, - falseClass: NewClass(), objectClass: NewClass(), topSelf: &RObject{}, } @@ -62,11 +60,5 @@ func (s *State) GetArgv() []Value { } func initCore(mrb *State) { - mrb.objectClass.DefineMethod("puts", &Method{ - Function: func(mrb *State, recv Value) Value { - args := mrb.GetArgv() - fmt.Println(args...) - return args[0] - }, - }) + initObject(mrb) } diff --git a/object.go b/object.go index 58b385f..2e47cf9 100644 --- a/object.go +++ b/object.go @@ -1,8 +1,23 @@ package mruby +import "fmt" + type RBasic struct { } type RObject struct { RBasic } + +func initObject(mrb *State) { + mrb.falseClass = NewClass() + mrb.trueClass = NewClass() + + mrb.objectClass.DefineMethod("puts", &Method{ + Function: func(mrb *State, recv Value) Value { + args := mrb.GetArgv() + fmt.Println(args...) + return args[0] + }, + }) +}