Class: YARD::Handlers::C::Base
Overview
Direct Known Subclasses
AliasHandler, AttributeHandler, ClassHandler, ConstantHandler, InitHandler, MethodHandler, MixinHandler, ModuleHandler, OverrideCommentHandler, PathHandler, StructHandler, SymbolHandler
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::CONSTANTSTART, CodeObjects::CSEP, CodeObjects::CSEPQ, CodeObjects::ISEP, CodeObjects::ISEPQ, CodeObjects::METHODMATCH, CodeObjects::METHODNAMEMATCH, CodeObjects::NAMESPACEMATCH, CodeObjects::NSEP, CodeObjects::NSEPQ
Registering objects
collapse
Looking up Symbol and Var Values
collapse
Parsing an Inner Block
collapse
Processing other files
collapse
Class Method Summary
collapse
#handle_alias, #handle_attribute, #handle_class, #handle_constants, #handle_method, #handle_module
Class Method Details
.handles?(statement, processor) ⇒ Boolean
Returns whether the handler handles this statement.
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
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
#ensure_variable_defined!(var, max_retries = 1) ⇒ Object
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/yard/handlers/c/base.rb', line 68
def ensure_variable_defined!(var, max_retries = 1)
retries, object = 0, nil
loop do
object = namespace_for_variable(var)
break unless object.is_a?(Proxy)
if retries <= max_retries
log.debug "Missing namespace variable #{var} in file `#{parser.file}', moving it to the back of the line."
parser.parse_remaining_files
else
raise NamespaceMissingError, object
end
retries += 1
end
object
end
|
#namespace_for_variable(var) ⇒ Object
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
|
#namespaces ⇒ Object
87
88
89
|
# File 'lib/yard/handlers/c/base.rb', line 87
def namespaces
globals.cruby_namespaces ||= {}
end
|
58
59
60
|
# File 'lib/yard/handlers/c/base.rb', line 58
def
globals. ||= []
end
|
#parse_block(opts = {}) ⇒ Object
97
98
99
100
101
102
|
# File 'lib/yard/handlers/c/base.rb', line 97
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
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/yard/handlers/c/base.rb', line 106
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_files ⇒ Object
91
92
93
|
# File 'lib/yard/handlers/c/base.rb', line 91
def processed_files
globals.cruby_processed_files ||= {}
end
|
#register_docstring(object, docstring = nil, stmt = nil) ⇒ Object
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
40
41
42
|
# File 'lib/yard/handlers/c/base.rb', line 40
def register_file_info(object, file = nil, line = nil, = nil)
super(object, file, line, ) if file
end
|
#register_source(object, source = nil, type = nil) ⇒ Object
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
48
49
50
|
# File 'lib/yard/handlers/c/base.rb', line 48
def register_visibility(object, visibility = nil)
super(object, visibility) if visibility
end
|
#symbols ⇒ Object
54
55
56
|
# File 'lib/yard/handlers/c/base.rb', line 54
def symbols
globals.cruby_symbols ||= {}
end
|