summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSeba Gamboa <[email protected]>2015-09-23 16:15:45 -0300
committerSeba Gamboa <[email protected]>2015-09-23 16:15:45 -0300
commit2eedb9b4b407778609b261a7e42773f5885da01e (patch)
treef009cd2c84ba111b618d89b764897db4e8510e05
parent122ac4dce17b7f9480b66f17382be67bd5dd8cbc (diff)
downloadyard-mruby-2eedb9b4b407778609b261a7e42773f5885da01e.tar.gz
yard-mruby-2eedb9b4b407778609b261a7e42773f5885da01e.zip
Handle module commentsv0.1.0
-rw-r--r--lib/yard/handlers/c.rb2
-rw-r--r--lib/yard/handlers/c/mruby_base.rb10
-rw-r--r--lib/yard/handlers/c/mruby_module_handler.rb12
-rw-r--r--spec/handlers/c/mruby_module_handler_spec.rb30
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