lsegal (owner)

Revisions

gist: 132759 Download_button fork
public
Public Clone URL: git://gist.github.com/132759.git
mod_class_line.rb
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
require 'yard'
 
class ClassLineHandler < YARD::Handlers::Ruby::Base
  handles :class
 
  def process
    obj = ClassObject.new(namespace, statement[0].source)
    obj.line_end = statement[0].line + statement.source.split("\n").size - 1
  end
end
 
class ModuleLineHandler < YARD::Handlers::Ruby::Base
  handles :module
 
  def process
    obj = register ModuleObject.new(namespace, statement[0].source)
    obj.line_end = statement[0].line + statement.source.split("\n").size - 1
  end
end
 
class LegacyClassLineHandler < YARD::Handlers::Ruby::Legacy::Base
  handles TkCLASS
 
  def process
    classname = statement.tokens.to_s[/^class\s+(#{NAMESPACEMATCH})/, 1]
    obj = ClassObject.new(namespace, classname)
    obj.line_end = statement.line + statement.to_s(true).split("\n").size - 1
  end
end
 
class LegacyModuleLineHandler < YARD::Handlers::Ruby::Legacy::Base
  handles TkMODULE
 
  def process
    modname = statement.tokens.to_s[/^module\s+(#{NAMESPACEMATCH})/, 1]
    obj = register ModuleObject.new(namespace, modname)
    obj.line_end = statement.line + statement.to_s(true).split("\n").size - 1
  end
end
 
YARD::Parser::SourceParser.parser_type = :ruby18
YARD::Parser::SourceParser.parse_string <<-eof
module M
class A
def a; end
end
end
eof
 
obj = P("M::A")
p obj.line..obj.line_end
 
obj = P("M")
p obj.line..obj.line_end