diff options
| author | Seba Gamboa <[email protected]> | 2015-09-23 16:15:45 -0300 |
|---|---|---|
| committer | Seba Gamboa <[email protected]> | 2015-09-23 16:15:45 -0300 |
| commit | 2eedb9b4b407778609b261a7e42773f5885da01e (patch) | |
| tree | f009cd2c84ba111b618d89b764897db4e8510e05 | |
| parent | 122ac4dce17b7f9480b66f17382be67bd5dd8cbc (diff) | |
| download | yard-mruby-0.1.0.tar.gz yard-mruby-0.1.0.zip | |
Handle module commentsv0.1.0
| -rw-r--r-- | lib/yard/handlers/c.rb | 2 | ||||
| -rw-r--r-- | lib/yard/handlers/c/mruby_base.rb | 10 | ||||
| -rw-r--r-- | lib/yard/handlers/c/mruby_module_handler.rb | 12 | ||||
| -rw-r--r-- | spec/handlers/c/mruby_module_handler_spec.rb | 30 |
4 files changed, 47 insertions, 7 deletions
diff --git a/lib/yard/handlers/c.rb b/lib/yard/handlers/c.rb index a291fa2..8666b51 100644 --- a/lib/yard/handlers/c.rb +++ b/lib/yard/handlers/c.rb @@ -1,6 +1,6 @@ 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_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 index 4c321dd..3b45f9a 100644 --- a/lib/yard/handlers/c/mruby_base.rb +++ b/lib/yard/handlers/c/mruby_base.rb @@ -33,5 +33,15 @@ module YARD::Handlers::C 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_module_handler.rb b/lib/yard/handlers/c/mruby_module_handler.rb index c9243ac..3b86274 100644 --- a/lib/yard/handlers/c/mruby_module_handler.rb +++ b/lib/yard/handlers/c/mruby_module_handler.rb @@ -1,14 +1,14 @@ -module YARD::MRuby::Handlers::Source - class ModuleHandler < Base +module YARD::Handlers::C + class MRubyModuleHandler < MRubyBase - TOP_LEVEL_MODULE = /\*([\w]+)\s*=\s*mrb_define_module\s* + 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* + NAMESPACED_MODULE = /([\w]+)\s*=\s*mrb_define_module_under\s* \( \s*\w+\s*, \s*(\w+)\s*, @@ -23,10 +23,10 @@ module YARD::MRuby::Handlers::Source process do statement.source.scan(TOP_LEVEL_MODULE) do |var_name, module_name| - handle_module(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, in_module) + handle_module(var_name, module_name, statement, in_module) end end end diff --git a/spec/handlers/c/mruby_module_handler_spec.rb b/spec/handlers/c/mruby_module_handler_spec.rb new file mode 100644 index 0000000..39530ff --- /dev/null +++ b/spec/handlers/c/mruby_module_handler_spec.rb @@ -0,0 +1,30 @@ +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 |
