summaryrefslogtreecommitdiffhomepage
path: root/lib/yard/mruby
diff options
context:
space:
mode:
Diffstat (limited to 'lib/yard/mruby')
-rw-r--r--lib/yard/mruby/code_objects/header_object.rb6
-rw-r--r--lib/yard/mruby/handlers.rb1
-rw-r--r--lib/yard/mruby/handlers/c.rb8
-rw-r--r--lib/yard/mruby/handlers/c/base.rb52
-rw-r--r--lib/yard/mruby/handlers/c/header.rb (renamed from lib/yard/mruby/handlers/header.rb)0
-rw-r--r--lib/yard/mruby/handlers/c/header/base.rb30
-rw-r--r--lib/yard/mruby/handlers/c/header/define_handler.rb (renamed from lib/yard/mruby/handlers/header/define_handler.rb)0
-rw-r--r--lib/yard/mruby/handlers/c/header/function_handler.rb (renamed from lib/yard/mruby/handlers/header/function_handler.rb)5
-rw-r--r--lib/yard/mruby/handlers/c/source.rb7
-rw-r--r--lib/yard/mruby/handlers/c/source/base.rb54
-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.rb16
-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
-rw-r--r--lib/yard/mruby/handlers/header/base.rb28
-rw-r--r--lib/yard/mruby/handlers/header/header_handler.rb0
-rw-r--r--lib/yard/mruby/parser.rb2
-rw-r--r--lib/yard/mruby/parser/c.rb3
-rw-r--r--lib/yard/mruby/parser/c/header_parser.rb (renamed from lib/yard/mruby/parser/header_parser.rb)5
-rw-r--r--lib/yard/mruby/parser/c/parser.rb10
-rw-r--r--lib/yard/mruby/parser/c/source_parser.rb9
22 files changed, 143 insertions, 101 deletions
diff --git a/lib/yard/mruby/code_objects/header_object.rb b/lib/yard/mruby/code_objects/header_object.rb
index 59f67a3..2e70230 100644
--- a/lib/yard/mruby/code_objects/header_object.rb
+++ b/lib/yard/mruby/code_objects/header_object.rb
@@ -3,12 +3,6 @@ module YARD::MRuby::CodeObjects
# A HeaderObject represents a MRuby header inside an include directory
# It groups C Functions and define macros.
class HeaderObject < YARD::CodeObjects::NamespaceObject
- def initialize(*args)
- super
-
- raise "Invalid Header" unless self.title.match(/\.h$/)
- end
-
def functions
children.find_all {|d| d.is_a?(FunctionObject) }
end
diff --git a/lib/yard/mruby/handlers.rb b/lib/yard/mruby/handlers.rb
index bcd1a5d..1ae677a 100644
--- a/lib/yard/mruby/handlers.rb
+++ b/lib/yard/mruby/handlers.rb
@@ -1,2 +1 @@
require_relative 'handlers/c'
-require_relative 'handlers/header'
diff --git a/lib/yard/mruby/handlers/c.rb b/lib/yard/mruby/handlers/c.rb
index 2f25788..766989a 100644
--- a/lib/yard/mruby/handlers/c.rb
+++ b/lib/yard/mruby/handlers/c.rb
@@ -1,6 +1,4 @@
-require_relative 'c/base'
-require_relative 'c/symbol_handler'
-require_relative 'c/class_handler'
-require_relative 'c/module_handler'
-require_relative 'c/method_handler'
+require_relative 'c/source'
+require_relative 'c/header'
+YARD::Handlers::Processor.namespace_for_handler.delete(:c)
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/header.rb b/lib/yard/mruby/handlers/c/header.rb
index 590386f..590386f 100644
--- a/lib/yard/mruby/handlers/header.rb
+++ b/lib/yard/mruby/handlers/c/header.rb
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/header/define_handler.rb b/lib/yard/mruby/handlers/c/header/define_handler.rb
index e69de29..e69de29 100644
--- a/lib/yard/mruby/handlers/header/define_handler.rb
+++ b/lib/yard/mruby/handlers/c/header/define_handler.rb
diff --git a/lib/yard/mruby/handlers/header/function_handler.rb b/lib/yard/mruby/handlers/c/header/function_handler.rb
index 9b98258..6bdb8a6 100644
--- a/lib/yard/mruby/handlers/header/function_handler.rb
+++ b/lib/yard/mruby/handlers/c/header/function_handler.rb
@@ -1,4 +1,4 @@
-module YARD::MRuby::Handlers::Header
+module YARD::MRuby::Handlers::C::Header
class FunctionHandler < Base
MATCH = /
MRB_(API|INLINE)\s+((\w+\s+)+)(\w+)\s*\(
@@ -16,6 +16,9 @@ module YARD::MRuby::Handlers::Header
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
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
diff --git a/lib/yard/mruby/handlers/header/base.rb b/lib/yard/mruby/handlers/header/base.rb
deleted file mode 100644
index 1f3f16e..0000000
--- a/lib/yard/mruby/handlers/header/base.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-module YARD::MRuby::Handlers
- 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
diff --git a/lib/yard/mruby/handlers/header/header_handler.rb b/lib/yard/mruby/handlers/header/header_handler.rb
deleted file mode 100644
index e69de29..0000000
--- a/lib/yard/mruby/handlers/header/header_handler.rb
+++ /dev/null
diff --git a/lib/yard/mruby/parser.rb b/lib/yard/mruby/parser.rb
index f8a74ac..4c91895 100644
--- a/lib/yard/mruby/parser.rb
+++ b/lib/yard/mruby/parser.rb
@@ -1 +1 @@
-require_relative 'parser/header_parser'
+require_relative 'parser/c'
diff --git a/lib/yard/mruby/parser/c.rb b/lib/yard/mruby/parser/c.rb
new file mode 100644
index 0000000..4d95fa1
--- /dev/null
+++ b/lib/yard/mruby/parser/c.rb
@@ -0,0 +1,3 @@
+require_relative 'c/parser'
+require_relative 'c/source_parser'
+require_relative 'c/header_parser'
diff --git a/lib/yard/mruby/parser/header_parser.rb b/lib/yard/mruby/parser/c/header_parser.rb
index 6fe4df3..598fe21 100644
--- a/lib/yard/mruby/parser/header_parser.rb
+++ b/lib/yard/mruby/parser/c/header_parser.rb
@@ -1,6 +1,5 @@
-
-module YARD::MRuby::Parser
- class HeaderParser < YARD::Parser::C::CParser
+module YARD::MRuby::Parser::C
+ class HeaderParser < Parser
end
#
diff --git a/lib/yard/mruby/parser/c/parser.rb b/lib/yard/mruby/parser/c/parser.rb
new file mode 100644
index 0000000..3b6414a
--- /dev/null
+++ b/lib/yard/mruby/parser/c/parser.rb
@@ -0,0 +1,10 @@
+module YARD::MRuby::Parser
+ module C
+ class Parser < YARD::Parser::C::CParser
+ end
+
+ # Disable default C Parser
+ YARD::Parser::SourceParser.parser_types.delete(:c)
+ YARD::Parser::SourceParser.parser_type_extensions.delete(:c)
+ end
+end
diff --git a/lib/yard/mruby/parser/c/source_parser.rb b/lib/yard/mruby/parser/c/source_parser.rb
new file mode 100644
index 0000000..f468dea
--- /dev/null
+++ b/lib/yard/mruby/parser/c/source_parser.rb
@@ -0,0 +1,9 @@
+module YARD::MRuby::Parser::C
+ class SourceParser < Parser
+ end
+
+ #
+ # Register all header files (.h) to be processed with the above HeaderParser
+ YARD::Parser::SourceParser.register_parser_type :source, SourceParser, 'c'
+
+end