summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--lib/yard/handlers/c/mruby_base.rb11
-rw-r--r--lib/yard/handlers/c/mruby_class_handler.rb4
-rw-r--r--spec/handlers/c/mruby_class_handler_spec.rb9
3 files changed, 22 insertions, 2 deletions
diff --git a/lib/yard/handlers/c/mruby_base.rb b/lib/yard/handlers/c/mruby_base.rb
index 45f0dd6..ccf85b4 100644
--- a/lib/yard/handlers/c/mruby_base.rb
+++ b/lib/yard/handlers/c/mruby_base.rb
@@ -24,5 +24,16 @@ module YARD::Handlers::C
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
+
end
end
diff --git a/lib/yard/handlers/c/mruby_class_handler.rb b/lib/yard/handlers/c/mruby_class_handler.rb
index 9e3d1f5..72d516c 100644
--- a/lib/yard/handlers/c/mruby_class_handler.rb
+++ b/lib/yard/handlers/c/mruby_class_handler.rb
@@ -25,10 +25,10 @@ module YARD::Handlers::C
process do
statement.source.scan(TOP_LEVEL_CLASS) do |var_name, class_name, parent|
- handle_class(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, in_module)
+ handle_class(var_name, class_name, parent, statement, in_module)
end
end
end
diff --git a/spec/handlers/c/mruby_class_handler_spec.rb b/spec/handlers/c/mruby_class_handler_spec.rb
index 521ad62..5c13ab2 100644
--- a/spec/handlers/c/mruby_class_handler_spec.rb
+++ b/spec/handlers/c/mruby_class_handler_spec.rb
@@ -29,4 +29,13 @@ describe YARD::Handlers::C::MRubyClassHandler do
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