diff options
| author | Seba Gamboa <[email protected]> | 2015-09-25 18:01:14 -0300 |
|---|---|---|
| committer | Seba Gamboa <[email protected]> | 2015-09-25 18:01:14 -0300 |
| commit | 3a60c88a3b3dbd334e4769a6283fb90c0495c25b (patch) | |
| tree | de3d8ec187771d6e2d5f42da864c19ee6d69d890 /lib/yard/mruby/handlers/c | |
| parent | 82e906d74dcc943d737ced7a6ebfee1e71a74aaf (diff) | |
| download | yard-mruby-3a60c88a3b3dbd334e4769a6283fb90c0495c25b.tar.gz yard-mruby-3a60c88a3b3dbd334e4769a6283fb90c0495c25b.zip | |
Sorting tons of stuff around
Diffstat (limited to 'lib/yard/mruby/handlers/c')
| -rw-r--r-- | lib/yard/mruby/handlers/c/base.rb | 52 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/header.rb | 2 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/header/base.rb | 30 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/header/define_handler.rb | 0 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/header/function_handler.rb | 26 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/source.rb | 7 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/source/base.rb | 54 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/source/class_handler.rb (renamed from lib/yard/mruby/handlers/c/class_handler.rb) | 2 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/source/init_handler.rb | 16 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/source/method_handler.rb (renamed from lib/yard/mruby/handlers/c/method_handler.rb) | 2 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/source/module_handler.rb (renamed from lib/yard/mruby/handlers/c/module_handler.rb) | 2 | ||||
| -rw-r--r-- | lib/yard/mruby/handlers/c/source/symbol_handler.rb (renamed from lib/yard/mruby/handlers/c/symbol_handler.rb) | 2 |
12 files changed, 139 insertions, 56 deletions
diff --git a/lib/yard/mruby/handlers/c/base.rb b/lib/yard/mruby/handlers/c/base.rb deleted file mode 100644 index 6bb2436..0000000 --- a/lib/yard/mruby/handlers/c/base.rb +++ /dev/null @@ -1,52 +0,0 @@ -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/header.rb b/lib/yard/mruby/handlers/c/header.rb new file mode 100644 index 0000000..590386f --- /dev/null +++ b/lib/yard/mruby/handlers/c/header.rb @@ -0,0 +1,2 @@ +require_relative 'header/base' +require_relative 'header/function_handler' diff --git a/lib/yard/mruby/handlers/c/header/base.rb b/lib/yard/mruby/handlers/c/header/base.rb new file mode 100644 index 0000000..f0771ca --- /dev/null +++ b/lib/yard/mruby/handlers/c/header/base.rb @@ -0,0 +1,30 @@ +module YARD::MRuby::Handlers + module C + module Header + class Base < YARD::Handlers::C::Base + include YARD::MRuby::CodeObjects + + def header(path) + # Remove include prefix + path = path.gsub(/^.*include\//,'') + + headers[path] ||= begin + header = HeaderObject.new(HEADERS_ROOT, path) + register header + header + end + + + end + + def headers + globals.mruby_headers ||= {} + end + + end + + end + + YARD::Handlers::Processor.register_handler_namespace :header, Header + end +end diff --git a/lib/yard/mruby/handlers/c/header/define_handler.rb b/lib/yard/mruby/handlers/c/header/define_handler.rb new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/lib/yard/mruby/handlers/c/header/define_handler.rb diff --git a/lib/yard/mruby/handlers/c/header/function_handler.rb b/lib/yard/mruby/handlers/c/header/function_handler.rb new file mode 100644 index 0000000..6bdb8a6 --- /dev/null +++ b/lib/yard/mruby/handlers/c/header/function_handler.rb @@ -0,0 +1,26 @@ +module YARD::MRuby::Handlers::C::Header + class FunctionHandler < Base + MATCH = / + MRB_(API|INLINE)\s+((\w+\s+)+)(\w+)\s*\( + /mx + + handles MATCH + statement_class ToplevelStatement + + process do + handle_function(statement) + end + + def handle_function(statement) + header = self.header(statement.file) + + statement.source.scan(MATCH) do |type, prefix, _, name, *args| + register FunctionObject.new(header, name) do |obj| + if statement.comments + register_docstring(obj, statement.comments.source, statement) + end + end + end + end + end +end diff --git a/lib/yard/mruby/handlers/c/source.rb b/lib/yard/mruby/handlers/c/source.rb new file mode 100644 index 0000000..8f2a68c --- /dev/null +++ b/lib/yard/mruby/handlers/c/source.rb @@ -0,0 +1,7 @@ +require_relative 'source/base' +require_relative 'source/init_handler' +require_relative 'source/symbol_handler' +require_relative 'source/class_handler' +require_relative 'source/module_handler' +require_relative 'source/method_handler' + diff --git a/lib/yard/mruby/handlers/c/source/base.rb b/lib/yard/mruby/handlers/c/source/base.rb new file mode 100644 index 0000000..268ef9f --- /dev/null +++ b/lib/yard/mruby/handlers/c/source/base.rb @@ -0,0 +1,54 @@ +module YARD::MRuby::Handlers + module C + module Source + 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 :source, Source + end +end diff --git a/lib/yard/mruby/handlers/c/class_handler.rb b/lib/yard/mruby/handlers/c/source/class_handler.rb index f0223f0..a8f3b84 100644 --- a/lib/yard/mruby/handlers/c/class_handler.rb +++ b/lib/yard/mruby/handlers/c/source/class_handler.rb @@ -1,4 +1,4 @@ -module YARD::MRuby::Handlers::C +module YARD::MRuby::Handlers::C::Source class ClassHandler < Base TOP_LEVEL_CLASS = /([\w]+)\s*=\s*mrb_define_class\s* diff --git a/lib/yard/mruby/handlers/c/source/init_handler.rb b/lib/yard/mruby/handlers/c/source/init_handler.rb new file mode 100644 index 0000000..43115a0 --- /dev/null +++ b/lib/yard/mruby/handlers/c/source/init_handler.rb @@ -0,0 +1,16 @@ +module YARD::MRuby::Handlers::C::Source + class InitHandler < Base + MATCH1 = /mrb_\w+_gem_init\s*\(/mx + MATCH2 = /mrb_init_\w\s*\(/mx + + handles MATCH1 + handles MATCH2 + statement_class ToplevelStatement + + process do + parse_block + end + + end +end + diff --git a/lib/yard/mruby/handlers/c/method_handler.rb b/lib/yard/mruby/handlers/c/source/method_handler.rb index d60b568..b744f54 100644 --- a/lib/yard/mruby/handlers/c/method_handler.rb +++ b/lib/yard/mruby/handlers/c/source/method_handler.rb @@ -1,4 +1,4 @@ -module YARD::MRuby::Handlers::C +module YARD::MRuby::Handlers::C::Source class MethodHandler < Base MATCH1 = /mrb_define_( method | diff --git a/lib/yard/mruby/handlers/c/module_handler.rb b/lib/yard/mruby/handlers/c/source/module_handler.rb index 6b38be9..587fc3e 100644 --- a/lib/yard/mruby/handlers/c/module_handler.rb +++ b/lib/yard/mruby/handlers/c/source/module_handler.rb @@ -1,4 +1,4 @@ -module YARD::MRuby::Handlers::C +module YARD::MRuby::Handlers::C::Source class ModuleHandler < Base TOP_LEVEL_MODULE = /([\w]+)\s*=\s*mrb_define_module\s* diff --git a/lib/yard/mruby/handlers/c/symbol_handler.rb b/lib/yard/mruby/handlers/c/source/symbol_handler.rb index 8f24b93..a1e3caa 100644 --- a/lib/yard/mruby/handlers/c/symbol_handler.rb +++ b/lib/yard/mruby/handlers/c/source/symbol_handler.rb @@ -1,4 +1,4 @@ -module YARD::MRuby::Handlers::C +module YARD::MRuby::Handlers::C::Source # Keeps track of function bodies for symbol lookup during MRuby method declarations class SymbolHandler < Base |
