Project1
标题:
class分析工具 v0.1 2009-2-15
[打印本页]
作者:
灼眼的夏娜
时间:
2009-2-16 20:00
还可以提取出方法的参数个数。。 至于方法内容是不可能的。。。再说了
ruby内部类方法基本都是c写的。。打算提取出ruby源码。。?
内部类的方法定义看ruby源码都可以找到的。。
作者:
脚本小妹
时间:
2009-2-16 20:54
提示:
作者被禁止或删除 内容自动屏蔽
作者:
菜鸟飞呀飞
时间:
2009-2-17 02:19
提示:
作者被禁止或删除 内容自动屏蔽
作者:
沉影不器
时间:
2009-2-17 04:41
提示:
作者被禁止或删除 内容自动屏蔽
作者:
神思
时间:
2009-2-18 08:49
不太可能..
那只是函数名而已..
我不认为人家会把函数原码放到函数内...
作者:
木葬枫
时间:
2009-2-18 20:19
突然想起楼主的“自动画地图”脚本―_―+
作者:
zh99998
时间:
2009-2-18 20:42
以下引用
灼眼的夏娜于2009-2-16 12:00:18
的发言:
还可以提取出方法的参数个数。。 至于方法内容是不可能的。。。再说了
ruby内部类方法基本都是c写的。。打算提取出ruby源码。。?
是提取RGSS内建类源码,而不是Ruby内建类
我的思路:
对照Ruby手册重定义掉绝大多数的方法,只留少量方法使下面的代码能够运行
留下要读取定义的方法(比如Window的initialize)
定义成类似
def a(*args)
$a.push "a"
$a.push args
end
这样,Window.new时就会把initialize大部分内容输出到$a
作者:
zh99998
时间:
2009-6-12 08:00
标题:
class分析工具 v0.1 2009-2-15
def read_class(object)
classname = object.class.to_s
methods = "
instance_variables
public_methods
private_methods
protected_methods
singleton_methods
constants
nesting
ancestors
class_variables
constants
included_modules
public_instance_methods
private_instance_methods
protected_instance_methods
global_variables
"
error = "以下方法执行失败"
sucsess = "以下方法执行成功,结果保存在#{classname}文件夹"
null = "以下方法返回值为空"
result = {}
Dir.mkdir(classname) rescue Dir.foreach(classname){|file|File.delete(classname + file)rescue nil}
methods = methods.split("\n")
methods.delete("")
methods.each do |method|
method.delete(" ")
str = eval("object." + method) rescue eval(classname + method) rescue false
if str == false
error += "\n" + method
elsif str.nil? or str.empty?
null += "\n" + method
else
File.open(classname + "/" + method + ".txt", "wb") do |file|
str = str.inspect
file.write(str)
sucsess += "\n" + method
result[method] = str
end
end
end
print (error + "\n\n" + sucsess + "\n\n" + null)
result.each {|key,value| print key + "\n\n" + value}
end
复制代码
使用方法:read_class(实例)
example: read_class(Tilemap.new)
提取类中的方法等资料
也许可以用来分析RGSS内建类
Ruby手册研究中
根据Ruby手册貌似可以把方法转成实例,这样似乎能输出方法的定义了{/fd}
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1