summaryrefslogtreecommitdiffhomepage
path: root/lib/yard
diff options
context:
space:
mode:
authorSeba Gamboa <[email protected]>2015-09-23 15:18:35 -0300
committerSeba Gamboa <[email protected]>2015-09-23 15:18:35 -0300
commitc219bc56094c1e5878e2c7c3ff1de9b8a9fa973a (patch)
tree5800b1527d6f46c79356a8a8f906cafed86db6d6 /lib/yard
parentaed91b0fb2fe3c2cd3a74e2e5bc23c8bd95ef1db (diff)
downloadyard-mruby-c219bc56094c1e5878e2c7c3ff1de9b8a9fa973a.tar.gz
yard-mruby-c219bc56094c1e5878e2c7c3ff1de9b8a9fa973a.zip
Handling method definitions
Diffstat (limited to 'lib/yard')
-rw-r--r--lib/yard/handlers/c.rb1
-rw-r--r--lib/yard/handlers/c/mruby_base.rb2
-rw-r--r--lib/yard/handlers/c/mruby_method_handler.rb12
-rw-r--r--lib/yard/handlers/c/mruby_symbol_handler.rb15
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