summaryrefslogtreecommitdiffhomepage
path: root/lib/yard/mruby/handlers/c/source/base.rb
blob: 268ef9f2d7b06bfee5ebc99df17094201e64889d (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
53
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