lsegal / yard

YARD is a Ruby Documentation tool (Yay!)

YARD is a documentation generation tool for the Ruby programming language.
 It enables the user to generate consistent, usable documentation that can be
 exported to a number of formats very easily, and also supports extending for
 custom Ruby constructs such as custom class level definitions.

This URL has Read+Write access

yard / lib / yard / handlers / base.rb
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