From c219bc56094c1e5878e2c7c3ff1de9b8a9fa973a Mon Sep 17 00:00:00 2001 From: Seba Gamboa Date: Wed, 23 Sep 2015 15:18:35 -0300 Subject: Handling method definitions --- lib/yard/handlers/c.rb | 1 + lib/yard/handlers/c/mruby_base.rb | 2 ++ lib/yard/handlers/c/mruby_method_handler.rb | 12 ++++++++---- lib/yard/handlers/c/mruby_symbol_handler.rb | 15 +++++++++++++++ 4 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 lib/yard/handlers/c/mruby_symbol_handler.rb (limited to 'lib') diff --git a/lib/yard/handlers/c.rb b/lib/yard/handlers/c.rb index 61c4943..a291fa2 100644 --- a/lib/yard/handlers/c.rb +++ b/lib/yard/handlers/c.rb @@ -1,4 +1,5 @@ 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 index 83c237a..570dd71 100644 --- a/lib/yard/handlers/c/mruby_base.rb +++ b/lib/yard/handlers/c/mruby_base.rb @@ -8,5 +8,7 @@ module YARD::Handlers::C return DEFAULT_NAMESPACES[var] if DEFAULT_NAMESPACES[var] super end + + end end diff --git a/lib/yard/handlers/c/mruby_method_handler.rb b/lib/yard/handlers/c/mruby_method_handler.rb index 01fb345..a8812ae 100644 --- a/lib/yard/handlers/c/mruby_method_handler.rb +++ b/lib/yard/handlers/c/mruby_method_handler.rb @@ -1,7 +1,11 @@ module YARD::Handlers::C class MRubyMethodHandler < MRubyBase - MATCH1 = /mrb_define_method\s* - \( + MATCH1 = /mrb_define_( + method | + singleton_method | + module_function + ) + \s*\( \s*\w+\s*, \s*(\w+)\s*, \s*"(\w+)"\s*, @@ -12,8 +16,8 @@ module YARD::Handlers::C statement_class BodyStatement process do - statement.source.scan(MATCH1) do |var_name, name, func_name| - handle_method(nil, var_name, name, func_name) + statement.source.scan(MATCH1) do |type,var_name, name, func_name| + handle_method(type, var_name, name, func_name) end end diff --git a/lib/yard/handlers/c/mruby_symbol_handler.rb b/lib/yard/handlers/c/mruby_symbol_handler.rb new file mode 100644 index 0000000..8b256d2 --- /dev/null +++ b/lib/yard/handlers/c/mruby_symbol_handler.rb @@ -0,0 +1,15 @@ +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 -- cgit v1.2.3