summaryrefslogtreecommitdiffhomepage
path: root/lib/yard/mruby/handlers/c/base.rb
blob: 6bb24361266890276e0ee49fccd7703c8a3fc2c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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