From 36407e1eb5c274f5e19b0f55114d4c66f5de7753 Mon Sep 17 00:00:00 2001 From: Seba Gamboa Date: Thu, 24 Sep 2015 12:40:55 -0300 Subject: Move MRuby c Handlers into YARD::MRuby and disable defaults --- lib/yard/handlers.rb | 2 -- lib/yard/handlers/c.rb | 6 ---- lib/yard/handlers/c/mruby_base.rb | 47 ------------------------- lib/yard/handlers/c/mruby_class_handler.rb | 35 ------------------- lib/yard/handlers/c/mruby_method_handler.rb | 25 -------------- lib/yard/handlers/c/mruby_module_handler.rb | 34 ------------------- lib/yard/handlers/c/mruby_symbol_handler.rb | 15 -------- lib/yard/mruby.rb | 1 - lib/yard/mruby/handlers.rb | 1 + lib/yard/mruby/handlers/c.rb | 6 ++++ lib/yard/mruby/handlers/c/base.rb | 51 ++++++++++++++++++++++++++++ lib/yard/mruby/handlers/c/class_handler.rb | 35 +++++++++++++++++++ lib/yard/mruby/handlers/c/method_handler.rb | 25 ++++++++++++++ lib/yard/mruby/handlers/c/module_handler.rb | 34 +++++++++++++++++++ lib/yard/mruby/handlers/c/symbol_handler.rb | 16 +++++++++ spec/handlers/c/class_handler_spec.rb | 41 ++++++++++++++++++++++ spec/handlers/c/method_handler_spec.rb | 48 ++++++++++++++++++++++++++ spec/handlers/c/module_handler_spec.rb | 30 ++++++++++++++++ spec/handlers/c/mruby_class_handler_spec.rb | 41 ---------------------- spec/handlers/c/mruby_method_handler_spec.rb | 48 -------------------------- spec/handlers/c/mruby_module_handler_spec.rb | 30 ---------------- 21 files changed, 287 insertions(+), 284 deletions(-) delete mode 100644 lib/yard/handlers.rb delete mode 100644 lib/yard/handlers/c.rb delete mode 100644 lib/yard/handlers/c/mruby_base.rb delete mode 100644 lib/yard/handlers/c/mruby_class_handler.rb delete mode 100644 lib/yard/handlers/c/mruby_method_handler.rb delete mode 100644 lib/yard/handlers/c/mruby_module_handler.rb delete mode 100644 lib/yard/handlers/c/mruby_symbol_handler.rb create mode 100644 lib/yard/mruby/handlers/c.rb create mode 100644 lib/yard/mruby/handlers/c/base.rb create mode 100644 lib/yard/mruby/handlers/c/class_handler.rb create mode 100644 lib/yard/mruby/handlers/c/method_handler.rb create mode 100644 lib/yard/mruby/handlers/c/module_handler.rb create mode 100644 lib/yard/mruby/handlers/c/symbol_handler.rb create mode 100644 spec/handlers/c/class_handler_spec.rb create mode 100644 spec/handlers/c/method_handler_spec.rb create mode 100644 spec/handlers/c/module_handler_spec.rb delete mode 100644 spec/handlers/c/mruby_class_handler_spec.rb delete mode 100644 spec/handlers/c/mruby_method_handler_spec.rb delete mode 100644 spec/handlers/c/mruby_module_handler_spec.rb diff --git a/lib/yard/handlers.rb b/lib/yard/handlers.rb deleted file mode 100644 index 41a1f73..0000000 --- a/lib/yard/handlers.rb +++ /dev/null @@ -1,2 +0,0 @@ -require_relative 'handlers/c' -#require_relative 'handlers/header' diff --git a/lib/yard/handlers/c.rb b/lib/yard/handlers/c.rb deleted file mode 100644 index 8666b51..0000000 --- a/lib/yard/handlers/c.rb +++ /dev/null @@ -1,6 +0,0 @@ -require_relative 'c/mruby_base' -require_relative 'c/mruby_symbol_handler' -require_relative 'c/mruby_class_handler' -require_relative 'c/mruby_module_handler' -require_relative 'c/mruby_method_handler' - diff --git a/lib/yard/handlers/c/mruby_base.rb b/lib/yard/handlers/c/mruby_base.rb deleted file mode 100644 index 3b45f9a..0000000 --- a/lib/yard/handlers/c/mruby_base.rb +++ /dev/null @@ -1,47 +0,0 @@ -module YARD::Handlers::C - class MRubyBase < Base - - DEFAULT_NAMESPACES = { - # 'mrb->top_self' => '', - 'object_class' => 'Object', - 'class_class' => 'Class', - 'module_class' => 'Module', - 'proc_class' => 'Proc', - 'string_class' => 'String', - 'array_class' => 'Array', - 'hash_class' => 'Hash', - 'float_class' => 'Float', - 'fixnum_class' => 'Fixnum', - 'true_class' => 'TrueClass', - 'false_class' => 'FalseClass', - 'nil_class' => 'NilClass', - 'symbol_class' => 'Symbol', - 'kernel_module' => 'Kernel' - } - - def namespace_for_variable(var) - DEFAULT_NAMESPACES[ var[/^\w+->(\w+)$/, 1] ] || super - end - - def handle_class(var_name, class_name, parent, stmt, in_module = nil) - object = super(var_name, class_name, parent, in_module) - - if stmt.comments - register_docstring(object, stmt.comments.source, stmt) - end - - object - end - - def handle_module(var_name, module_name, stmt, in_module = nil) - object = super(var_name, module_name, in_module) - - if stmt.comments - register_docstring(object, stmt.comments.source, stmt) - end - - object - end - - end -end diff --git a/lib/yard/handlers/c/mruby_class_handler.rb b/lib/yard/handlers/c/mruby_class_handler.rb deleted file mode 100644 index 72d516c..0000000 --- a/lib/yard/handlers/c/mruby_class_handler.rb +++ /dev/null @@ -1,35 +0,0 @@ -module YARD::Handlers::C - class MRubyClassHandler < MRubyBase - - TOP_LEVEL_CLASS = /([\w]+)\s*=\s*mrb_define_class\s* - \( - \s*\w+\s*, - \s*"(\w+)"\s*, - \s*([\w\->]+)\s* - \) - /mx - - NAMESPACED_CLASS = /([\w]+)\s*=\s*mrb_define_class_under\s* - \( - \s*\w+\s*, - \s*(\w+)\s*, - \s*"(\w+)"\s*, - \s*([\w\->]+)\s* - \) - /mx - - handles TOP_LEVEL_CLASS - handles NAMESPACED_CLASS - - statement_class BodyStatement - - process do - statement.source.scan(TOP_LEVEL_CLASS) do |var_name, class_name, parent| - handle_class(var_name, class_name, parent, statement) - end - statement.source.scan(NAMESPACED_CLASS) do |var_name, in_module, class_name, parent| - handle_class(var_name, class_name, parent, statement, in_module) - end - end - end -end diff --git a/lib/yard/handlers/c/mruby_method_handler.rb b/lib/yard/handlers/c/mruby_method_handler.rb deleted file mode 100644 index a8812ae..0000000 --- a/lib/yard/handlers/c/mruby_method_handler.rb +++ /dev/null @@ -1,25 +0,0 @@ -module YARD::Handlers::C - class MRubyMethodHandler < MRubyBase - MATCH1 = /mrb_define_( - method | - singleton_method | - module_function - ) - \s*\( - \s*\w+\s*, - \s*(\w+)\s*, - \s*"(\w+)"\s*, - \s*(\w+)\s*, - /mx - - handles MATCH1 - statement_class BodyStatement - - process do - statement.source.scan(MATCH1) do |type,var_name, name, func_name| - handle_method(type, var_name, name, func_name) - end - end - - end -end diff --git a/lib/yard/handlers/c/mruby_module_handler.rb b/lib/yard/handlers/c/mruby_module_handler.rb deleted file mode 100644 index 3b86274..0000000 --- a/lib/yard/handlers/c/mruby_module_handler.rb +++ /dev/null @@ -1,34 +0,0 @@ -module YARD::Handlers::C - class MRubyModuleHandler < MRubyBase - - TOP_LEVEL_MODULE = /([\w]+)\s*=\s*mrb_define_module\s* - \( - \s*\w+\s*, - \s*"(\w+)"\s* - \) - /mx - - NAMESPACED_MODULE = /([\w]+)\s*=\s*mrb_define_module_under\s* - \( - \s*\w+\s*, - \s*(\w+)\s*, - \s*"(\w+)"\s* - \) - /mx - - handles TOP_LEVEL_MODULE - handles NAMESPACED_MODULE - - statement_class BodyStatement - - process do - statement.source.scan(TOP_LEVEL_MODULE) do |var_name, module_name| - handle_module(var_name, module_name, statement) - end - statement.source.scan(NAMESPACED_MODULE) do |var_name, in_module, module_name| - handle_module(var_name, module_name, statement, in_module) - end - end - end -end - diff --git a/lib/yard/handlers/c/mruby_symbol_handler.rb b/lib/yard/handlers/c/mruby_symbol_handler.rb deleted file mode 100644 index 8b256d2..0000000 --- a/lib/yard/handlers/c/mruby_symbol_handler.rb +++ /dev/null @@ -1,15 +0,0 @@ -module YARD::Handlers::C - # Keeps track of function bodies for symbol lookup during MRuby method declarations - class MRubySymbolHandler < MRubyBase - MATCH = / - mrb_value\s*(\w+)\s*\(\s*mrb_state\s*\*\s*\w+,\s*mrb_value\s*\w+\s*\) - /mx - - handles MATCH - statement_class ToplevelStatement - - process do - symbols[statement.source[MATCH, 1]] = statement - end - end -end diff --git a/lib/yard/mruby.rb b/lib/yard/mruby.rb index cc73bcb..2ccd6e8 100644 --- a/lib/yard/mruby.rb +++ b/lib/yard/mruby.rb @@ -2,4 +2,3 @@ require_relative "mruby/version" require_relative "mruby/code_objects" require_relative "mruby/parser" require_relative "mruby/handlers" -require_relative "handlers" diff --git a/lib/yard/mruby/handlers.rb b/lib/yard/mruby/handlers.rb index 848d25e..bcd1a5d 100644 --- a/lib/yard/mruby/handlers.rb +++ b/lib/yard/mruby/handlers.rb @@ -1 +1,2 @@ +require_relative 'handlers/c' require_relative 'handlers/header' diff --git a/lib/yard/mruby/handlers/c.rb b/lib/yard/mruby/handlers/c.rb new file mode 100644 index 0000000..2f25788 --- /dev/null +++ b/lib/yard/mruby/handlers/c.rb @@ -0,0 +1,6 @@ +require_relative 'c/base' +require_relative 'c/symbol_handler' +require_relative 'c/class_handler' +require_relative 'c/module_handler' +require_relative 'c/method_handler' + diff --git a/lib/yard/mruby/handlers/c/base.rb b/lib/yard/mruby/handlers/c/base.rb new file mode 100644 index 0000000..6f17c37 --- /dev/null +++ b/lib/yard/mruby/handlers/c/base.rb @@ -0,0 +1,51 @@ +module YARD::MRuby::Handlers + module C + class Base < YARD::Handlers::C::Base + + DEFAULT_NAMESPACES = { + # 'mrb->top_self' => '', + 'object_class' => 'Object', + 'class_class' => 'Class', + 'module_class' => 'Module', + 'proc_class' => 'Proc', + 'string_class' => 'String', + 'array_class' => 'Array', + 'hash_class' => 'Hash', + 'float_class' => 'Float', + 'fixnum_class' => 'Fixnum', + 'true_class' => 'TrueClass', + 'false_class' => 'FalseClass', + 'nil_class' => 'NilClass', + 'symbol_class' => 'Symbol', + 'kernel_module' => 'Kernel' + } + + def namespace_for_variable(var) + DEFAULT_NAMESPACES[ var[/^\w+->(\w+)$/, 1] ] || super + end + + def handle_class(var_name, class_name, parent, stmt, in_module = nil) + object = super(var_name, class_name, parent, in_module) + + if stmt.comments + register_docstring(object, stmt.comments.source, stmt) + end + + object + end + + def handle_module(var_name, module_name, stmt, in_module = nil) + object = super(var_name, module_name, in_module) + + if stmt.comments + register_docstring(object, stmt.comments.source, stmt) + end + + object + end + + end + end + + YARD::Handlers::Processor.register_handler_namespace :C, C +end diff --git a/lib/yard/mruby/handlers/c/class_handler.rb b/lib/yard/mruby/handlers/c/class_handler.rb new file mode 100644 index 0000000..f0223f0 --- /dev/null +++ b/lib/yard/mruby/handlers/c/class_handler.rb @@ -0,0 +1,35 @@ +module YARD::MRuby::Handlers::C + class ClassHandler < Base + + TOP_LEVEL_CLASS = /([\w]+)\s*=\s*mrb_define_class\s* + \( + \s*\w+\s*, + \s*"(\w+)"\s*, + \s*([\w\->]+)\s* + \) + /mx + + NAMESPACED_CLASS = /([\w]+)\s*=\s*mrb_define_class_under\s* + \( + \s*\w+\s*, + \s*(\w+)\s*, + \s*"(\w+)"\s*, + \s*([\w\->]+)\s* + \) + /mx + + handles TOP_LEVEL_CLASS + handles NAMESPACED_CLASS + + statement_class BodyStatement + + process do + statement.source.scan(TOP_LEVEL_CLASS) do |var_name, class_name, parent| + handle_class(var_name, class_name, parent, statement) + end + statement.source.scan(NAMESPACED_CLASS) do |var_name, in_module, class_name, parent| + handle_class(var_name, class_name, parent, statement, in_module) + end + end + end +end diff --git a/lib/yard/mruby/handlers/c/method_handler.rb b/lib/yard/mruby/handlers/c/method_handler.rb new file mode 100644 index 0000000..d60b568 --- /dev/null +++ b/lib/yard/mruby/handlers/c/method_handler.rb @@ -0,0 +1,25 @@ +module YARD::MRuby::Handlers::C + class MethodHandler < Base + MATCH1 = /mrb_define_( + method | + singleton_method | + module_function + ) + \s*\( + \s*\w+\s*, + \s*(\w+)\s*, + \s*"(\w+)"\s*, + \s*(\w+)\s*, + /mx + + handles MATCH1 + statement_class BodyStatement + + process do + statement.source.scan(MATCH1) do |type,var_name, name, func_name| + handle_method(type, var_name, name, func_name) + end + end + + end +end diff --git a/lib/yard/mruby/handlers/c/module_handler.rb b/lib/yard/mruby/handlers/c/module_handler.rb new file mode 100644 index 0000000..6b38be9 --- /dev/null +++ b/lib/yard/mruby/handlers/c/module_handler.rb @@ -0,0 +1,34 @@ +module YARD::MRuby::Handlers::C + class ModuleHandler < Base + + TOP_LEVEL_MODULE = /([\w]+)\s*=\s*mrb_define_module\s* + \( + \s*\w+\s*, + \s*"(\w+)"\s* + \) + /mx + + NAMESPACED_MODULE = /([\w]+)\s*=\s*mrb_define_module_under\s* + \( + \s*\w+\s*, + \s*(\w+)\s*, + \s*"(\w+)"\s* + \) + /mx + + handles TOP_LEVEL_MODULE + handles NAMESPACED_MODULE + + statement_class BodyStatement + + process do + statement.source.scan(TOP_LEVEL_MODULE) do |var_name, module_name| + handle_module(var_name, module_name, statement) + end + statement.source.scan(NAMESPACED_MODULE) do |var_name, in_module, module_name| + handle_module(var_name, module_name, statement, in_module) + end + end + end +end + diff --git a/lib/yard/mruby/handlers/c/symbol_handler.rb b/lib/yard/mruby/handlers/c/symbol_handler.rb new file mode 100644 index 0000000..8f24b93 --- /dev/null +++ b/lib/yard/mruby/handlers/c/symbol_handler.rb @@ -0,0 +1,16 @@ +module YARD::MRuby::Handlers::C + # Keeps track of function bodies for symbol lookup during MRuby method declarations + class SymbolHandler < Base + + MATCH = / + mrb_value\s*(\w+)\s*\(\s*mrb_state\s*\*\s*\w+,\s*mrb_value\s*\w+\s*\) + /mx + + handles MATCH + statement_class ToplevelStatement + + process do + symbols[statement.source[MATCH, 1]] = statement + end + end +end diff --git a/spec/handlers/c/class_handler_spec.rb b/spec/handlers/c/class_handler_spec.rb new file mode 100644 index 0000000..9428dd6 --- /dev/null +++ b/spec/handlers/c/class_handler_spec.rb @@ -0,0 +1,41 @@ +require_relative 'spec_helper' + +describe YARD::MRuby::Handlers::C::ClassHandler do + it "should register classes" do + parse_init 'cFoo = mrb_define_class(mrb, "Foo", mrb->object_class);' + + expect(Registry.at('Foo').type).to be :class + end + + it "should register classes under namespaces" do + parse_init 'cFoo = mrb_define_class_under(mrb, cBar, "Foo", rb_cObject);' + expect(Registry.at('Bar::Foo').type).to be :class + end + + it "should remember symbol defined with class" do + parse_init(<<-eof) + cXYZ = mrb_define_class(mrb, "Foo", mrb->object_class); + mrb_define_method(mrb, cXYZ, "bar", bar, MRB_ARGS_NONE()); + eof + expect(Registry.at('Foo').type).to be :class + expect(Registry.at('Foo#bar')).not_to be_nil + end + + it "should lookup superclass symbol name" do + parse_init(<<-eof) + cXYZ = mrb_define_class(mrb,"Foo", mrb->object_class); + cBar = mrb_define_class(mrb,"Bar", cXYZ); + eof + expect(Registry.at('Bar').superclass).to eq Registry.at('Foo') + end + + it "should associate declaration comments as class docstring" do + parse_init(<<-eof) + /* Docstring! */ + cFoo = mrb_define_class(mrb, "Foo", mrb->object_class); + eof + + expect(Registry.at('Foo').docstring).not_to be_blank + end + +end diff --git a/spec/handlers/c/method_handler_spec.rb b/spec/handlers/c/method_handler_spec.rb new file mode 100644 index 0000000..31e297d --- /dev/null +++ b/spec/handlers/c/method_handler_spec.rb @@ -0,0 +1,48 @@ +require_relative 'spec_helper' + +describe YARD::MRuby::Handlers::C::MethodHandler do + it "should register methods" do + parse_init <<-eof + mFoo = mrb_define_module(mrb, "Foo"); + mrb_define_method(mrb, mFoo, "bar", bar, MRB_ARGS_NONE()); + eof + expect(Registry.at('Foo#bar')).not_to be_nil + expect(Registry.at('Foo#bar').visibility).to be :public + end + + it "should register singleton methods" do + parse_init <<-eof + mFoo = mrb_define_module("Foo"); + mrb_define_singleton_method(mrb, mFoo, "bar", bar, MRB_ARGS_NONE()); + eof + expect(Registry.at('Foo.bar')).not_to be_nil + expect(Registry.at('Foo.bar').visibility).to be :public + end + + it "should register module functions" do + parse <<-eof + /* DOCSTRING + * @return [String] foo! + */ + static mrb_value bar(mrb_state *mrb, mrb_value self) { x(); y(); z(); } + + void mrb_foo_gem_init(mrb_state *mrb) { + mFoo = mrb_define_module(mrb, "Foo"); + mrb_define_module_function(mrb, mFoo, "bar", bar, MRB_ARGS_NONE()); + } + eof + bar_c = Registry.at('Foo.bar') + bar_i = Registry.at('Foo#bar') + + expect(bar_c).to be_module_function + expect(bar_c.visibility).to be :public + expect(bar_c.docstring).to eq "DOCSTRING" + expect(bar_c.tag(:return).object).to eq bar_c + expect(bar_c.source).to eq "static mrb_value bar(mrb_state *mrb, mrb_value self) { x(); y(); z(); }" + expect(bar_i).not_to be_module_function + expect(bar_i.visibility).to be :private + expect(bar_i.docstring).to eq "DOCSTRING" + expect(bar_i.tag(:return).object).to eq bar_i + expect(bar_i.source).to eq bar_c.source + end +end diff --git a/spec/handlers/c/module_handler_spec.rb b/spec/handlers/c/module_handler_spec.rb new file mode 100644 index 0000000..aedf1a5 --- /dev/null +++ b/spec/handlers/c/module_handler_spec.rb @@ -0,0 +1,30 @@ +require_relative 'spec_helper' + +describe YARD::MRuby::Handlers::C::ModuleHandler do + it "should register modules" do + parse_init 'mFoo = mrb_define_module(mrb, "Foo");' + expect(Registry.at('Foo').type).to be :module + end + + it "should register modules under namespaces" do + parse_init 'mFoo = mrb_define_module_under(mrb, mBar, "Foo");' + expect(Registry.at('Bar::Foo').type).to be :module + end + + it "should remember symbol defined with module" do + parse_init(<<-eof) + cXYZ = mrb_define_module(mrb, "Foo"); + mrb_define_method(mrb, cXYZ, "bar", bar, 0); + eof + expect(Registry.at('Foo').type).to be :module + expect(Registry.at('Foo#bar')).not_to be_nil + end + + it "should associate declaration comments as module docstring" do + parse_init(<<-eof) + /* Docstring! */ + mFoo = mrb_define_module(mrb, "Foo"); + eof + expect(Registry.at('Foo').docstring).not_to be_blank + end +end diff --git a/spec/handlers/c/mruby_class_handler_spec.rb b/spec/handlers/c/mruby_class_handler_spec.rb deleted file mode 100644 index 5c13ab2..0000000 --- a/spec/handlers/c/mruby_class_handler_spec.rb +++ /dev/null @@ -1,41 +0,0 @@ -require_relative 'spec_helper' - -describe YARD::Handlers::C::MRubyClassHandler do - it "should register classes" do - parse_init 'cFoo = mrb_define_class(mrb, "Foo", mrb->object_class);' - - expect(Registry.at('Foo').type).to be :class - end - - it "should register classes under namespaces" do - parse_init 'cFoo = mrb_define_class_under(mrb, cBar, "Foo", rb_cObject);' - expect(Registry.at('Bar::Foo').type).to be :class - end - - it "should remember symbol defined with class" do - parse_init(<<-eof) - cXYZ = mrb_define_class(mrb, "Foo", mrb->object_class); - mrb_define_method(mrb, cXYZ, "bar", bar, MRB_ARGS_NONE()); - eof - expect(Registry.at('Foo').type).to be :class - expect(Registry.at('Foo#bar')).not_to be_nil - end - - it "should lookup superclass symbol name" do - parse_init(<<-eof) - cXYZ = mrb_define_class(mrb,"Foo", mrb->object_class); - cBar = mrb_define_class(mrb,"Bar", cXYZ); - eof - expect(Registry.at('Bar').superclass).to eq Registry.at('Foo') - end - - it "should associate declaration comments as class docstring" do - parse_init(<<-eof) - /* Docstring! */ - cFoo = mrb_define_class(mrb, "Foo", mrb->object_class); - eof - - expect(Registry.at('Foo').docstring).not_to be_blank - end - -end diff --git a/spec/handlers/c/mruby_method_handler_spec.rb b/spec/handlers/c/mruby_method_handler_spec.rb deleted file mode 100644 index 4ae86fb..0000000 --- a/spec/handlers/c/mruby_method_handler_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -require_relative 'spec_helper' - -describe YARD::Handlers::C::MRubyMethodHandler do - it "should register methods" do - parse_init <<-eof - mFoo = mrb_define_module(mrb, "Foo"); - mrb_define_method(mrb, mFoo, "bar", bar, MRB_ARGS_NONE()); - eof - expect(Registry.at('Foo#bar')).not_to be_nil - expect(Registry.at('Foo#bar').visibility).to be :public - end - - it "should register singleton methods" do - parse_init <<-eof - mFoo = mrb_define_module("Foo"); - mrb_define_singleton_method(mrb, mFoo, "bar", bar, MRB_ARGS_NONE()); - eof - expect(Registry.at('Foo.bar')).not_to be_nil - expect(Registry.at('Foo.bar').visibility).to be :public - end - - it "should register module functions" do - parse <<-eof - /* DOCSTRING - * @return [String] foo! - */ - static mrb_value bar(mrb_state *mrb, mrb_value self) { x(); y(); z(); } - - void mrb_foo_gem_init(mrb_state *mrb) { - mFoo = mrb_define_module(mrb, "Foo"); - mrb_define_module_function(mrb, mFoo, "bar", bar, MRB_ARGS_NONE()); - } - eof - bar_c = Registry.at('Foo.bar') - bar_i = Registry.at('Foo#bar') - - expect(bar_c).to be_module_function - expect(bar_c.visibility).to be :public - expect(bar_c.docstring).to eq "DOCSTRING" - expect(bar_c.tag(:return).object).to eq bar_c - expect(bar_c.source).to eq "static mrb_value bar(mrb_state *mrb, mrb_value self) { x(); y(); z(); }" - expect(bar_i).not_to be_module_function - expect(bar_i.visibility).to be :private - expect(bar_i.docstring).to eq "DOCSTRING" - expect(bar_i.tag(:return).object).to eq bar_i - expect(bar_i.source).to eq bar_c.source - end -end diff --git a/spec/handlers/c/mruby_module_handler_spec.rb b/spec/handlers/c/mruby_module_handler_spec.rb deleted file mode 100644 index 39530ff..0000000 --- a/spec/handlers/c/mruby_module_handler_spec.rb +++ /dev/null @@ -1,30 +0,0 @@ -require_relative 'spec_helper' - -describe YARD::Handlers::C::MRubyModuleHandler do - it "should register modules" do - parse_init 'mFoo = mrb_define_module(mrb, "Foo");' - expect(Registry.at('Foo').type).to be :module - end - - it "should register modules under namespaces" do - parse_init 'mFoo = mrb_define_module_under(mrb, mBar, "Foo");' - expect(Registry.at('Bar::Foo').type).to be :module - end - - it "should remember symbol defined with module" do - parse_init(<<-eof) - cXYZ = mrb_define_module(mrb, "Foo"); - mrb_define_method(mrb, cXYZ, "bar", bar, 0); - eof - expect(Registry.at('Foo').type).to be :module - expect(Registry.at('Foo#bar')).not_to be_nil - end - - it "should associate declaration comments as module docstring" do - parse_init(<<-eof) - /* Docstring! */ - mFoo = mrb_define_module(mrb, "Foo"); - eof - expect(Registry.at('Foo').docstring).not_to be_blank - end -end -- cgit v1.2.3