# 一个类包含:类名,属性列表和内部类指针
class Clazz
def initialize(cls_name)
@cls_name = cls_name
@attrs=[]
@lead_cls_names=nil #前面有几个前导类名
@list_attrs = []
end
def cls_name
@cls_name
end
attr_accessor :attrs, :lead_cls_names ,:list_attrs
end
#属性
class Attr
def initialize(type=nil,name=nil)
@type ,@name=type,name
end
attr_accessor :type, :name
end
class Env
def initialize()
@clz_list = [] #类的容器
@cur_clz = nil #当前类
@attr = nil #当前属性
@attr_index=0 #当前类的第几个属性
@clz_index=0 #当前属于第几个类
@cls_print_queue=nil #类打印队列
@cur_cls_list_attrs_index = 0
end
attr_accessor :clz_list,:cur_clz,:attr,:attr_index,:clz_index,:cur_cls_list_attrs_index
end
$env = Env.new
def print_clz_list #测试容器数据
$env.clz_list.each do |clzz|
lead_cls_names = clzz.lead_cls_names
print "============"
lead_cls_names.each do |lead_names|
print lead_names + "-"
end
print "#{clzz.cls_name}============\n"
attrs = clzz.attrs
attrs.each do |attr|
puts attr.type + "=" + attr.name
end
end
end
def print_cls_head(i)
clazz = $env.clz_list[i]
lead_clz_names = clazz.lead_cls_names
lead_num = lead_clz_names.size
cls_name = clazz.cls_name
template = ""
if(i == 0)
template += "public class #{cls_name}{\n"
else
template += "\n"
template += "\t" * lead_num
template += "public static class #{cls_name}{\n"
end
template += "\n"
template += "\t" * lead_num + "\t"
template += "private #{cls_name}(){}\n"
template
end
#返回前导类的个数
def get_lead_num(i)
lead_cls_names = $env.clz_list[i].lead_cls_names
lead_num = 0
if(lead_cls_names == nil)
lead_num = 0
else
lead_num = lead_cls_names.size
end
lead_num
end
def print_cls_end(i)
lead_num = get_lead_num(i)
template = "\t" * lead_num + "}\n\n"
template
end
def print_attrs(i)
lead_type = "\t" * get_lead_num(i) + "\t"
attrs = $env.clz_list[i].attr
JavaBean基于Builder,通用JSON解析,代码生成器
最新推荐文章于 2022-10-14 16:13:32 发布