From 36407e1eb5c274f5e19b0f55114d4c66f5de7753 Mon Sep 17 00:00:00 2001 From: Seba Gamboa Date: Thu, 24 Sep 2015 12:40:55 -0300 Subject: Move MRuby c Handlers into YARD::MRuby and disable defaults --- lib/yard/handlers.rb | 2 -- lib/yard/handlers/c.rb | 6 ---- lib/yard/handlers/c/mruby_base.rb | 47 -------------------------- lib/yard/handlers/c/mruby_class_handler.rb | 35 -------------------- lib/yard/handlers/c/mruby_method_handler.rb | 25 -------------- lib/yard/handlers/c/mruby_module_handler.rb | 34 ------------------- lib/yard/handlers/c/mruby_symbol_handler.rb | 15 --------- lib/yard/mruby.rb | 1 - lib/yard/mruby/handlers.rb | 1 + lib/yard/mruby/handlers/c.rb | 6 ++++ lib/yard/mruby/handlers/c/base.rb | 51 +++++++++++++++++++++++++++++ lib/yard/mruby/handlers/c/class_handler.rb | 35 ++++++++++++++++++++ lib/yard/mruby/handlers/c/method_handler.rb | 25 ++++++++++++++ lib/yard/mruby/handlers/c/module_handler.rb | 34 +++++++++++++++++++ lib/yard/mruby/handlers/c/symbol_handler.rb | 16 +++++++++ 15 files changed, 168 insertions(+), 165 deletions(-) delete mode 100644 lib/yard/handlers.rb delete mode 100644 lib/yard/handlers/c.rb delete mode 100644 lib/yard/handlers/c/mruby_base.rb delete mode 100644 lib/yard/handlers/c/mruby_class_handler.rb delete mode 100644 lib/yard/handlers/c/mruby_method_handler.rb delete mode 100644 lib/yard/handlers/c/mruby_module_handler.rb delete mode 100644 lib/yard/handlers/c/mruby_symbol_handler.rb create mode 100644 lib/yard/mruby/handlers/c.rb create mode 100644 lib/yard/mruby/handlers/c/base.rb create mode 100644 lib/yard/mruby/handlers/c/class_handler.rb create mode 100644 lib/yard/mruby/handlers/c/method_handler.rb create mode 100644 lib/yard/mruby/handlers/c/module_handler.rb create mode 100644 lib/yard/mruby/handlers/c/symbol_handler.rb (limited to 'lib') diff --git a/lib/yard/handlers.rb b/lib/yard/handlers.rb deleted file mode 100644 index 41a1f73..0000000 --- a/lib/yard/handlers.rb +++ /dev/null @@ -1,2 +0,0 @@ -require_relative 'handlers/c' -#require_relative 'handlers/header' diff --git a/lib/yard/handlers/c.rb b/lib/yard/handlers/c.rb deleted file mode 100644 index 8666b51..0000000 --- a/lib/yard/handlers/c.rb +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 3b45f9a..0000000 --- a/lib/yard/handlers/c/mruby_base.rb +++ /dev/null @@ -1,47 +0,0 @@ -module YARD::Handlers::C - class MRubyBase < Base - - DEFAULT_NAMESPACES = { - # 'mrb->top_self' => '', - 'object_class' => 'Object', - 'class_class' => 'Class', - 'module_class' => 'Module', - 'proc_class' => 'Proc', - 'string_class' => 'String', - 'array_class' => 'Array', - 'hash_class' => 'Hash', - 'float_class' => 'Float', - 'fixnum_class' => 'Fixnum', - 'true_class' => 'TrueClass', - 'false_class' => 'FalseClass', - 'nil_class' => 'NilClass', - 'symbol_class' => 'Symbol', - 'kernel_module' => 'Kernel' - } - - def namespace_for_variable(var) - DEFAULT_NAMESPACES[ var[/^\w+->(\w+)$/, 1] ] || 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 - - 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_class_handler.rb b/lib/yard/handlers/c/mruby_class_handler.rb deleted file mode 100644 index 72d516c..0000000 --- a/lib/yard/handlers/c/mruby_class_handler.rb +++ /dev/null @@ -1,35 +0,0 @@ -module YARD::Handlers::C - class MRubyClassHandler < MRubyBase - - TOP_LEVEL_CLASS = /([\w]+)\s*=\s*mrb_define_class\s* - \( - \s*\w+\s*, - \s*"(\w+)"\s*, - \s*([\w\->]+)\s* - \) - /mx - - NAMESPACED_CLASS = /([\w]+)\s*=\s*mrb_define_class_under\s* - \( - \s*\w+\s*, - \s*(\w+)\s*, - \s*"(\w+)"\s*, - \s*([\w\->]+)\s* - \) - /mx - - handles TOP_LEVEL_CLASS - handles NAMESPACED_CLASS - - statement_class BodyStatement - - process do - statement.source.scan(TOP_LEVEL_CLASS) do |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, statement, in_module) - end - end - end -end diff --git a/lib/yard/handlers/c/mruby_method_handler.rb b/lib/yard/handlers/c/mruby_method_handler.rb deleted file mode 100644 index a8812ae..0000000 --- a/lib/yard/handlers/c/mruby_method_handler.rb +++ /dev/null @@ -1,25 +0,0 @@ -module YARD::Handlers::C - class MRubyMethodHandler < MRubyBase - MATCH1 = /mrb_define_( - method | - singleton_method | - module_function - ) - \s*\( - \s*\w+\s*, - \s*(\w+)\s*, - \s*"(\w+)"\s*, - \s*(\w+)\s*, - /mx - - handles MATCH1 - statement_class BodyStatement - - process do - statement.source.scan(MATCH1) do |type,var_name, name, func_name| - handle_method(type, var_name, name, func_name) - end - end - - end -end diff --git a/lib/yard/handlers/c/mruby_module_handler.rb b/lib/yard/handlers/c/mruby_module_handler.rb deleted file mode 100644 index 3b86274..0000000 --- a/lib/yard/handlers/c/mruby_module_handler.rb +++ /dev/null @@ -1,34 +0,0 @@ -module YARD::Handlers::C - class MRubyModuleHandler < MRubyBase - - 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* - \( - \s*\w+\s*, - \s*(\w+)\s*, - \s*"(\w+)"\s* - \) - /mx - - handles TOP_LEVEL_MODULE - handles NAMESPACED_MODULE - - statement_class BodyStatement - - process do - statement.source.scan(TOP_LEVEL_MODULE) do |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, statement, in_module) - end - end - end -end - diff --git a/lib/yard/handlers/c/mruby_symbol_handler.rb b/lib/yard/handlers/c/mruby_symbol_handler.rb deleted file mode 100644 index 8b256d2..0000000 --- a/lib/yard/handlers/c/mruby_symbol_handler.rb +++ /dev/null @@ -1,15 +0,0 @@ -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 diff --git a/lib/yard/mruby.rb b/lib/yard/mruby.rb index cc73bcb..2ccd6e8 100644 --- a/lib/yard/mruby.rb +++ b/lib/yard/mruby.rb @@ -2,4 +2,3 @@ require_relative "mruby/version" require_relative "mruby/code_objects" require_relative "mruby/parser" require_relative "mruby/handlers" -require_relative "handlers" diff --git a/lib/yard/mruby/handlers.rb b/lib/yard/mruby/handlers.rb index 848d25e..bcd1a5d 100644 --- a/lib/yard/mruby/handlers.rb +++ b/lib/yard/mruby/handlers.rb @@ -1 +1,2 @@ +require_relative 'handlers/c' require_relative 'handlers/header' diff --git a/lib/yard/mruby/handlers/c.rb b/lib/yard/mruby/handlers/c.rb new file mode 100644 index 0000000..2f25788 --- /dev/null +++ b/lib/yard/mruby/handlers/c.rb @@ -0,0 +1,6 @@ +require_relative 'c/base' +require_relative 'c/symbol_handler' +require_relative 'c/class_handler' +require_relative 'c/module_handler' +require_relative 'c/method_handler' + diff --git a/lib/yard/mruby/handlers/c/base.rb b/lib/yard/mruby/handlers/c/base.rb new file mode 100644 index 0000000..6f17c37 --- /dev/null +++ b/lib/yard/mruby/handlers/c/base.rb @@ -0,0 +1,51 @@ +module YARD::MRuby::Handlers + module C + class Base < YARD::Handlers::C::Base + + DEFAULT_NAMESPACES = { + # 'mrb->top_self' => '', + 'object_class' => 'Object', + 'class_class' => 'Class', + 'module_class' => 'Module', + 'proc_class' => 'Proc', + 'string_class' => 'String', + 'array_class' => 'Array', + 'hash_class' => 'Hash', + 'float_class' => 'Float', + 'fixnum_class' => 'Fixnum', + 'true_class' => 'TrueClass', + 'false_class' => 'FalseClass', + 'nil_class' => 'NilClass', + 'symbol_class' => 'Symbol', + 'kernel_module' => 'Kernel' + } + + def namespace_for_variable(var) + DEFAULT_NAMESPACES[ var[/^\w+->(\w+)$/, 1] ] || 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 + + 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 + + YARD::Handlers::Processor.register_handler_namespace :C, C +end diff --git a/lib/yard/mruby/handlers/c/class_handler.rb b/lib/yard/mruby/handlers/c/class_handler.rb new file mode 100644 index 0000000..f0223f0 --- /dev/null +++ b/lib/yard/mruby/handlers/c/class_handler.rb @@ -0,0 +1,35 @@ +module YARD::MRuby::Handlers::C + class ClassHandler < Base + + TOP_LEVEL_CLASS = /([\w]+)\s*=\s*mrb_define_class\s* + \( + \s*\w+\s*, + \s*"(\w+)"\s*, + \s*([\w\->]+)\s* + \) + /mx + + NAMESPACED_CLASS = /([\w]+)\s*=\s*mrb_define_class_under\s* + \( + \s*\w+\s*, + \s*(\w+)\s*, + \s*"(\w+)"\s*, + \s*([\w\->]+)\s* + \) + /mx + + handles TOP_LEVEL_CLASS + handles NAMESPACED_CLASS + + statement_class BodyStatement + + process do + statement.source.scan(TOP_LEVEL_CLASS) do |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, statement, in_module) + end + end + end +end diff --git a/lib/yard/mruby/handlers/c/method_handler.rb b/lib/yard/mruby/handlers/c/method_handler.rb new file mode 100644 index 0000000..d60b568 --- /dev/null +++ b/lib/yard/mruby/handlers/c/method_handler.rb @@ -0,0 +1,25 @@ +module YARD::MRuby::Handlers::C + class MethodHandler < Base + MATCH1 = /mrb_define_( + method | + singleton_method | + module_function + ) + \s*\( + \s*\w+\s*, + \s*(\w+)\s*, + \s*"(\w+)"\s*, + \s*(\w+)\s*, + /mx + + handles MATCH1 + statement_class BodyStatement + + process do + statement.source.scan(MATCH1) do |type,var_name, name, func_name| + handle_method(type, var_name, name, func_name) + end + end + + end +end diff --git a/lib/yard/mruby/handlers/c/module_handler.rb b/lib/yard/mruby/handlers/c/module_handler.rb new file mode 100644 index 0000000..6b38be9 --- /dev/null +++ b/lib/yard/mruby/handlers/c/module_handler.rb @@ -0,0 +1,34 @@ +module YARD::MRuby::Handlers::C + class ModuleHandler < Base + + 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* + \( + \s*\w+\s*, + \s*(\w+)\s*, + \s*"(\w+)"\s* + \) + /mx + + handles TOP_LEVEL_MODULE + handles NAMESPACED_MODULE + + statement_class BodyStatement + + process do + statement.source.scan(TOP_LEVEL_MODULE) do |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, statement, in_module) + end + end + end +end + diff --git a/lib/yard/mruby/handlers/c/symbol_handler.rb b/lib/yard/mruby/handlers/c/symbol_handler.rb new file mode 100644 index 0000000..8f24b93 --- /dev/null +++ b/lib/yard/mruby/handlers/c/symbol_handler.rb @@ -0,0 +1,16 @@ +module YARD::MRuby::Handlers::C + # Keeps track of function bodies for symbol lookup during MRuby method declarations + class SymbolHandler < Base + + 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