设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2512|回复: 7
打印 上一主题 下一主题

class分析工具 v0.1 2009-2-15

 关闭 [复制链接]

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

跳转到指定楼层
1
发表于 2009-6-12 08:00:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x

  1. def read_class(object)
  2.   classname = object.class.to_s
  3.   methods = "
  4. instance_variables
  5. public_methods
  6. private_methods
  7. protected_methods
  8. singleton_methods
  9. constants
  10. nesting
  11. ancestors
  12. class_variables
  13. constants
  14. included_modules
  15. public_instance_methods
  16. private_instance_methods
  17. protected_instance_methods
  18. global_variables
  19. "

  20.   error = "以下方法执行失败"
  21.   sucsess = "以下方法执行成功,结果保存在#{classname}文件夹"
  22.   null = "以下方法返回值为空"
  23.   result = {}
  24.   Dir.mkdir(classname) rescue Dir.foreach(classname){|file|File.delete(classname + file)rescue nil}
  25.   methods = methods.split("\n")
  26.   methods.delete("")
  27.   methods.each do |method|
  28.     method.delete(" ")
  29.     str = eval("object." + method) rescue eval(classname + method) rescue false
  30.     if str == false
  31.       error += "\n" + method
  32.     elsif str.nil? or str.empty?
  33.       null += "\n" + method
  34.     else
  35.       File.open(classname + "/" + method + ".txt", "wb") do |file|
  36.         str = str.inspect
  37.         file.write(str)
  38.         sucsess += "\n" + method
  39.         result[method] = str
  40.       end
  41.     end
  42.   end
  43.   print (error + "\n\n" + sucsess + "\n\n" + null)
  44.   result.each {|key,value| print key + "\n\n" + value}
  45. end
复制代码

使用方法:read_class(实例)
example: read_class(Tilemap.new)
提取类中的方法等资料
也许可以用来分析RGSS内建类

Ruby手册研究中
根据Ruby手册貌似可以把方法转成实例,这样似乎能输出方法的定义了{/fd}
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上

Lv1.梦旅人

炎发灼眼的讨伐者

梦石
0
星屑
50
在线时间
1707 小时
注册时间
2007-8-4
帖子
904
2
发表于 2009-2-16 20:00:18 | 只看该作者
还可以提取出方法的参数个数。。 至于方法内容是不可能的。。。再说了

ruby内部类方法基本都是c写的。。打算提取出ruby源码。。?

内部类的方法定义看ruby源码都可以找到的。。
RMXP&RMVX通用Web化完成- -|||
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-2-16
帖子
19
3
发表于 2009-2-16 20:54:55 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

菜鸟飞呀飞 该用户已被删除
4
发表于 2009-2-17 02:19:33 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

5
发表于 2009-2-17 04:41:30 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

6
发表于 2009-2-18 08:49:01 | 只看该作者
不太可能..
那只是函数名而已..
我不认为人家会把函数原码放到函数内...
-.-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

kissye的宠物<

梦石
0
星屑
61
在线时间
1563 小时
注册时间
2008-8-11
帖子
6174

贵宾

7
发表于 2009-2-18 20:19:30 | 只看该作者
突然想起楼主的“自动画地图”脚本―_―+
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

8
 楼主| 发表于 2009-2-18 20:42:05 | 只看该作者
以下引用灼眼的夏娜于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
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 04:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表