Class: YARD::Handlers::C::Base

Inherits:
Base
  • Object
show all
Includes:
HandlerMethods, Parser::C
Defined in:
lib/yard/handlers/c/base.rb

Overview

Since:

  • 0.8.0

Constant Summary

Constant Summary

Constants included from CodeObjects

CodeObjects::BUILTIN_ALL, CodeObjects::BUILTIN_CLASSES, CodeObjects::BUILTIN_EXCEPTIONS, CodeObjects::BUILTIN_EXCEPTIONS_HASH, CodeObjects::BUILTIN_MODULES, CodeObjects::CONSTANTMATCH, CodeObjects::CSEP, CodeObjects::CSEPQ, CodeObjects::ISEP, CodeObjects::ISEPQ, CodeObjects::METHODMATCH, CodeObjects::METHODNAMEMATCH, CodeObjects::NAMESPACEMATCH, CodeObjects::NSEP, CodeObjects::NSEPQ

Instance Attribute Summary collapse

Registering objects collapse

Looking up Symbol and Var Values collapse

Parsing an Inner Block collapse

Processing other files collapse

Class Method Summary collapse

Methods included from HandlerMethods

#handle_alias, #handle_attribute, #handle_class, #handle_constants, #handle_method, #handle_module

Constructor Details

This class inherits a constructor from YARD::Handlers::Base

Instance Attribute Details

#extra_stateObject (readonly) Originally defined in class Base

Returns the value of attribute extra_state

#globalsObject (readonly) Originally defined in class Base

Returns the value of attribute globals

#namespaceObject Originally defined in class Base

Returns the value of attribute namespace

#ownerObject Originally defined in class Base

Returns the value of attribute owner

#parserProcessor (readonly) Originally defined in class Base

#scopeObject Originally defined in class Base

Returns the value of attribute scope

#statementObject (readonly) Originally defined in class Base

#visibilityObject Originally defined in class Base

Returns the value of attribute visibility

Class Method Details

.handles?(statement, processor) ⇒ Boolean

Returns whether the handler handles this statement

Since:

  • 0.8.0



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/yard/handlers/c/base.rb', line 9

def self.handles?(statement, processor)
  processor.globals.cruby_processed_files ||= {}
  processor.globals.cruby_processed_files[processor.file] = true

  if statement.respond_to? :declaration
    src = statement.declaration
  else
    src = statement.source
  end

  handlers.any? do |a_handler|
    statement_class >= statement.class &&
      case a_handler
      when String
        src == a_handler
      when Regexp
        src =~ a_handler
      end
  end
end

.statement_class(type = nil) ⇒ Object

Since:

  • 0.8.0



30
31
32
# File 'lib/yard/handlers/c/base.rb', line 30

def self.statement_class(type = nil)
  type ? @statement_class = type : (@statement_class || Statement)
end

Instance Method Details

#namespace_for_variable(var) ⇒ Object

Since:

  • 0.8.0



62
63
64
65
66
# File 'lib/yard/handlers/c/base.rb', line 62

def namespace_for_variable(var)
  return namespaces[var] if namespaces[var]
  var = remove_var_prefix(var)
  var.empty? ? nil : P(var)
end

#namespacesObject

Since:

  • 0.8.0



68
69
70
# File 'lib/yard/handlers/c/base.rb', line 68

def namespaces
  globals.cruby_namespaces ||= {}
end

#override_commentsObject

Since:

  • 0.8.0



58
59
60
# File 'lib/yard/handlers/c/base.rb', line 58

def override_comments
  globals.cruby_override_comments ||= []
end

#parse_block(opts = {}) ⇒ Object

Since:

  • 0.8.0



78
79
80
81
82
83
# File 'lib/yard/handlers/c/base.rb', line 78

def parse_block(opts = {})
  return if !statement.block || statement.block.empty?
  push_state(opts) do
    parser.process(statement.block)
  end
end

#process_file(file, object) ⇒ Object

Since:

  • 0.8.0



87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/yard/handlers/c/base.rb', line 87

def process_file(file, object)
  file = File.cleanpath(file)
  return if processed_files[file]
  processed_files[file] = file
  begin
    log.debug "Processing embedded call to C source #{file}..."
    globals.ordered_parser.files.delete(file) if globals.ordered_parser
    parser.process(Parser::C::CParser.new(File.read(file), file).parse)
  rescue Errno::ENOENT
    log.warn "Missing source file `#{file}' when parsing #{object}"
  end
end

#processed_filesObject

Since:

  • 0.8.0



72
73
74
# File 'lib/yard/handlers/c/base.rb', line 72

def processed_files
  globals.cruby_processed_files ||= {}
end

#register_docstring(object, docstring = nil, stmt = nil) ⇒ Object

Since:

  • 0.8.0



36
37
38
# File 'lib/yard/handlers/c/base.rb', line 36

def register_docstring(object, docstring = nil, stmt = nil)
  super(object, docstring, stmt) if docstring
end

#register_file_info(object, file = nil, line = nil, comments = nil) ⇒ Object

Since:

  • 0.8.0



40
41
42
# File 'lib/yard/handlers/c/base.rb', line 40

def register_file_info(object, file = nil, line = nil, comments = nil)
  super(object, file, line, comments) if file
end

#register_source(object, source = nil, type = nil) ⇒ Object

Since:

  • 0.8.0



44
45
46
# File 'lib/yard/handlers/c/base.rb', line 44

def register_source(object, source = nil, type = nil)
  super(object, source, type) if source
end

#register_visibility(object, visibility = nil) ⇒ Object

Since:

  • 0.8.0



48
49
50
# File 'lib/yard/handlers/c/base.rb', line 48

def register_visibility(object, visibility = nil)
  super(object, visibility) if visibility
end

#symbolsObject

Since:

  • 0.8.0



54
55
56
# File 'lib/yard/handlers/c/base.rb', line 54

def symbols
  globals.cruby_symbols ||= {}
end