JavaBean基于Builder,通用JSON解析,代码生成器

# 一个类包含:类名,属性列表和内部类指针 
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值