diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/yard/handlers/c.rb | 1 | ||||
| -rw-r--r-- | lib/yard/handlers/c/mruby_base.rb | 2 | ||||
| -rw-r--r-- | lib/yard/handlers/c/mruby_method_handler.rb | 12 | ||||
| -rw-r--r-- | lib/yard/handlers/c/mruby_symbol_handler.rb | 15 |
4 files changed, 26 insertions, 4 deletions
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 |
