2013-02-02 21 views
0

我想在ruby中編寫一個簡單的文檔生成器,它將採用標準的.rb文件並列出所有定義的類或模塊,每個類或模塊中定義的所有方法和變量,並指出是否有任何方法是別名或從超類繼承。解析rb文件的定義

我該如何解決這個問題?

+4

你可以剖析YARD,看看他們是如何做到的。 –

+4

我看不出你做出的努力。 – sawa

回答

2

反向工程YARD可能是最好的主意(不知道爲什麼它是評論)。或者,你也可以用ruby_parser寶石來做到這一點。

require 'ruby_parser' 

class SillyRubyParserExample 
    def self.example 
    class_eval(RubyParser.new.parse(<<-EOS 
     class ParseMe 
     def a() end 
     def b() end 
     end 
    EOS 
    ).inspect) 
    end 

    def self.s(*args) 
    if args[0] == :defn 
     puts "def " + args[1].to_s 
    elsif args[0] == :class 
     puts "class " + args[1].to_s 
    end 
    end 
end 

SillyRubyParserExample.example 

產地:

def a 
def b 
class ParseMe 

當然,這僅僅是一個愚蠢的例子,只是羅列的方法和類。