解析rb文件以获取定义

时间:2013-02-02 05:15:28

标签: ruby

我想在ruby中编写一个简单的文档生成器,它将采用标准的.rb文件并列出定义的所有类或模块,在每个类或模块中定义的所有方法和变量,并指出是否有任何方法有别名或从超级班继承。

我该如何处理?

1 个答案:

答案 0 :(得分:2)

逆向工程YARD可能是最好的想法(不确定为什么它是评论)。或者,您可以使用ruby_parser gem。

执行此操作
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

当然,这只是一个愚蠢的例子,仅列出方法和类。