|
568a1db5
»
|
lsegal |
2008-05-09 |
Add Base handler and some s... |
1 |
module YARD |
| |
2 |
module Handlers |
|
6919f86d
»
|
lsegal |
2008-05-18 |
Add alias_method handler |
3 |
class UndocumentableError < Exception; end |
| |
4 |
|
|
568a1db5
»
|
lsegal |
2008-05-09 |
Add Base handler and some s... |
5 |
class Base |
| |
6 |
# For accessing convenience, eg. "MethodObject" |
| |
7 |
# instead of the full qualified namespace |
| |
8 |
include YARD::CodeObjects |
| |
9 |
|
|
029b3728
»
|
lsegal |
2008-05-12 |
Add spec for #resolve |
10 |
# For tokens like TkDEF, TkCLASS, etc. |
| |
11 |
include YARD::Parser::RubyToken |
| |
12 |
|
|
568a1db5
»
|
lsegal |
2008-05-09 |
Add Base handler and some s... |
13 |
class << self |
|
96704fe2
»
|
lsegal |
2008-05-09 |
Hook up source parser and a... |
14 |
def clear_subclasses |
| |
15 |
@@subclasses = [] |
| |
16 |
end |
| |
17 |
|
|
568a1db5
»
|
lsegal |
2008-05-09 |
Add Base handler and some s... |
18 |
def subclasses |
| |
19 |
@@subclasses || [] |
| |
20 |
end |
| |
21 |
|
| |
22 |
def inherited(subclass) |
| |
23 |
@@subclasses ||= [] |
| |
24 |
@@subclasses << subclass |
| |
25 |
end |
| |
26 |
|
| |
27 |
def handles(token) |
| |
28 |
@handler = token |
| |
29 |
end |
|
029b3728
»
|
lsegal |
2008-05-12 |
Add spec for #resolve |
30 |
|
|
568a1db5
»
|
lsegal |
2008-05-09 |
Add Base handler and some s... |
31 |
def handles?(tokens) |
| |
32 |
case @handler |
| |
33 |
when String |
| |
34 |
tokens.first.text == @handler |
| |
35 |
when Regexp |
| |
36 |
tokens.to_s =~ @handler ? true : false |
| |
37 |
else |
| |
38 |
@handler == tokens.first.class |
| |
39 |
end |
| |
40 |
end |
| |
41 |
end |
| |
42 |
|
|
0a31a796
»
|
lsegal |
2008-05-09 |
Add CodeObjectList class to... |
43 |
def process; end |
| |
44 |
|
|
568a1db5
»
|
lsegal |
2008-05-09 |
Add Base handler and some s... |
45 |
attr_reader :parser, :statement |
| |
46 |
|
| |
47 |
def initialize(source_parser, stmt) |
| |
48 |
@parser = source_parser |
| |
49 |
@statement = stmt |
| |
50 |
end |
|
7fb31eda
»
|
lsegal |
2008-05-10 |
Add #parse_block to parse t... |
51 |
|
|
029b3728
»
|
lsegal |
2008-05-12 |
Add spec for #resolve |
52 |
def parse_block(opts = nil) |
| |
53 |
opts = { |
| |
54 |
:namespace => nil, |
| |
55 |
:scope => :instance, |
| |
56 |
:owner => nil |
| |
57 |
}.update(opts || {}) |
| |
58 |
|
| |
59 |
if opts[:namespace] |
| |
60 |
ns, vis, sc = namespace, visibility, scope |
| |
61 |
self.namespace = opts[:namespace] |
|
7fb31eda
»
|
lsegal |
2008-05-10 |
Add #parse_block to parse t... |
62 |
self.visibility = :public |
|
029b3728
»
|
lsegal |
2008-05-12 |
Add spec for #resolve |
63 |
self.scope = opts[:scope] |
|
7fb31eda
»
|
lsegal |
2008-05-10 |
Add #parse_block to parse t... |
64 |
end |
| |
65 |
|
|
029b3728
»
|
lsegal |
2008-05-12 |
Add spec for #resolve |
66 |
self.owner = opts[:owner] ? opts[:owner] : namespace |
|
7fb31eda
»
|
lsegal |
2008-05-10 |
Add #parse_block to parse t... |
67 |
parser.parse(statement.block) if statement.block |
| |
68 |
|
|
029b3728
»
|
lsegal |
2008-05-12 |
Add spec for #resolve |
69 |
if opts[:namespace] |
|
7fb31eda
»
|
lsegal |
2008-05-10 |
Add #parse_block to parse t... |
70 |
self.namespace = ns |
|
521818cb
»
|
lsegal |
2008-05-12 |
Add #owner method to source... |
71 |
self.owner = namespace |
|
7fb31eda
»
|
lsegal |
2008-05-10 |
Add #parse_block to parse t... |
72 |
self.visibility = vis |
|
029b3728
»
|
lsegal |
2008-05-12 |
Add spec for #resolve |
73 |
self.scope = sc |
|
7fb31eda
»
|
lsegal |
2008-05-10 |
Add #parse_block to parse t... |
74 |
end |
| |
75 |
end |
|
568a1db5
»
|
lsegal |
2008-05-09 |
Add Base handler and some s... |
76 |
|
|
029b3728
»
|
lsegal |
2008-05-12 |
Add spec for #resolve |
77 |
def owner; @parser.owner end |
| |
78 |
def owner=(v) @parser.owner=(v) end |
|
568a1db5
»
|
lsegal |
2008-05-09 |
Add Base handler and some s... |
79 |
def namespace; @parser.namespace end |
| |
80 |
def namespace=(v); @parser.namespace=(v) end |
| |
81 |
def visibility; @parser.visibility end |
| |
82 |
def visibility=(v); @parser.visibility=(v) end |
| |
83 |
def scope; @parser.scope end |
| |
84 |
def scope=(v); @parser.scope=(v) end |
| |
85 |
end |
| |
86 |
end |
| |
87 |
end |