将lua版的配置表转换成ts版配置表

形如下边的配置表

language["instrument_txt_open"] = "#level#级\n解锁神兵"
language["camp_race_look_single_race_tip"] = "阵营竞技下周一开启,请主公积极报名参加"
language["FUNC_CAMP_RACE"] = {
	{ title = "阵营竞技", list = {
			"系统根据每位玩家战力最高的阵容,把报名参赛的玩家分配入不同阵营;",
			"经过预赛和决赛两个阶段,决出每个阵营的【霸主】。",} },
	{ title = "比赛时间", list = {
			"报名时间:每周一、四的4:00-21:00",
			"竞技时间:每周一、四的21:00",} },
	{ title = "预赛阶段", list = {
			"系统将给每位报名的玩家依次匹配20名同阵营的对手进行对战;",
			"每次对战的胜利者+10分,失败者-10分,轮空视为胜利;",
			"20轮对战后按积分排名,前8名出线进入决赛阶段。",} },
	{ title = "决赛阶段", list = {
			"出线的前8名玩家将两两匹配,进行三轮淘汰赛决出本阵营的【霸主】;",
			"不在对战状态的玩家,都可以选择本阵营的对战者进行支持;",
			"如果被支持者成功晋级,支持者可以获得元宝奖励。",} },
	{ title = "比赛奖励", list = {
			"所有报名玩家都将根据名次获得【破军碎片任选箱】,奖励通过邮件发放;",
			"阵营竞技结束后将开启阵营竞技拍卖,报名的玩家越多,拍卖奖励越多;",
			"所有报名的玩家都可以获得阵营竞技拍卖的分红。",} }		
}
language["camp_bet_win_award"] = "[{\"type\":\"text\",\"msg\":\"获胜可得\",\"color\":\"0xffb80c\",\"fontSize\":20}, \
										{\"type\":\"text\",\"msg\":\"#count#\",\"color\":\"0xfff7e8\",\"fontSize\":20},\
										{\"type\":\"text\",\"msg\":\"元宝\",\"color\":\"0xffb80c\",\"fontSize\":20}]"

转换脚本

function table2json(t)  
        local function serialize(tbl)  
                local tmp = {}  
                for k, v in pairs(tbl) do  
                        local k_type = type(k)  
                        local v_type = type(v)  
                        local key = (k_type == "string" and "\"" .. k .. "\":")  
                            or (k_type == "number" and "")  
                        local value = (v_type == "table" and serialize(v))  
                            or (v_type == "boolean" and tostring(v))  
                            or (v_type == "string" and "\"" .. v .. "\"")  
                            or (v_type == "number" and v)  
                        tmp[#tmp + 1] = key and value and tostring(key) .. tostring(value) or nil  
                end  
                if table.maxn(tbl) == 0 then  
                        return "{" .. table.concat(tmp, ",") .. "}"  
                else  
                        return "[" .. table.concat(tmp, ",") .. "]"  
                end  
        end  
        assert(type(t) == "table")  
        return serialize(t)  
end  
function pairsByKeys(t)
    local a = {}
    for n in pairs(t) do a[#a + 1] = n end
    table.sort(a)
    local i = 0
    return function ()
        i = i + 1
        return a[i], t[a[i]]
    end
end
print("ready---")
file = io.open("test.ts", "w+")
file:write("export var LangTemplate = {}\n")
-- for key, value in pairs(language) do 
for key, value in pairsByKeys (language) do     
	print("---"..key);
	if type(value)=="table" then
	   file:write("LangTemplate['"..key.."'] = ".."'"..table2json(value).."'".."\n")
	else 
		-- if string.find(value,"\n")>=0 then
		--记得在转换好的文件里替换掉_waitReplaceZM_为 "\n"
		value = string.gsub(value,"\n","_waitReplaceZM_")
		-- end
		file:write("LangTemplate['"..key.."'] = ".."'"..value.."'".."\n")
	end
end 

记得在转换好的文件里替换掉_waitReplaceZM_为 "\n"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值