玖叶教程网

前端编程开发入门

Lua脚本生成工具(lua脚本语言零基础教程)

local ScriptHelper = {}

--参数配置

ScriptHelper.Script_Type =

{

['ctrl'] = {type = 1, class = "%s = %s or BaseClass()", func = {[1] = "__init", [2] = "Instance", [3] = "GetView", [4] = "GetData", [5] = "ResetData"}},

['view'] = {type = 2, class = "%s = %s or BaseClass(BaseUIPanel)", func = {[1] = "__init", [2] = "loadLayoutCallback", [3] = "AddToStage", [4] = "RemoveFromStage"}},

['data'] = {type = 3, class = "%s = %s or BaseClass()", func = {[1] = "__init", [2] = "ResetData", [3] = "InitConfig", [4] = "GetConfig"}},

}

function ScriptHelper.New()

local obj = {}

setmetatable(obj, {__index = ScriptHelper})

ScriptHelper.__init(obj)

return obj

end

function ScriptHelper:__init()

self.script_base_name = self:GetConfig()

end

--函数方法格式化

function ScriptHelper:GetLuaFunctionFormat()

return "function %s:%s()"

end

function ScriptHelper:GetInstanceFormat()

return "if not %s._inst then\n" ..

"%s._inst = %s.New()\n" ..

"end\n" ..

"return %s._inst"

end

function ScriptHelper:GetViewFormat()

return "if not self.view then\n" ..

"require()\n" ..

"self.view = xxx.New()\n" ..

"end\n" ..

"return self.view"

end

function ScriptHelper:GetDataFormat()

return "if not self.data then\n" ..

"require()\n" ..

"self.data = xxx.New()\n" ..

"end\n" ..

"return self.data"

end

function ScriptHelper:Run(param, class_name)

io.write(string.format(param.class, class_name, class_name))

io.write("\n\n")

for i,v in ipairs(param.func) do

io.write(string.format(self:GetLuaFunctionFormat(), class_name, v))

io.write("\n")

if v == "Instance" then

io.write(string.format(self:GetInstanceFormat(), class_name, class_name, class_name, class_name))

elseif v == "GetView" then

io.write(self:GetViewFormat())

elseif v == "GetData" then

io.write(self:GetDataFormat())

else

io.write("--todo ...")

end

io.write("\n")

io.write("end")

io.write("\n\n")

end

end

function ScriptHelper:CreateCtrl(class_name)

self:Run(ScriptHelper.Script_Type.ctrl, class_name)

print("Script Ctrl Finish!")

end

function ScriptHelper:CreateView(class_name)

self:Run(ScriptHelper.Script_Type.view, class_name)

print("Script View Finish!")

end

function ScriptHelper:CreateData(class_name)

self:Run(ScriptHelper.Script_Type.data, class_name)

print("Script Data Finish!")

end

function ScriptHelper:GetClassName(file_name)

local class_name = ""

-- for v,_ in string.gmatch(file_name, "%w+") do

-- class_name = class_name .. string.gsub(v, "(%w)", function (arg)

-- return string.upper(arg)

-- end)

-- end

class_name = string.gsub(file_name, "_(%w)", function (arg)

return string.upper(arg)

end)

return string.upper(string.sub(class_name, 1, 1)) .. string.sub(class_name, 2, string.len(class_name))

end

function ScriptHelper:CreateFile(file_name, fix_name, func)

local full_file_name = ".\\TmpFile\\" .. file_name .. fix_name

-- 以只读方式打开文件

local file = io.open(full_file_name, "w+")

-- 设置默认输出文件为 test.lua

io.output(file)

func(self:GetClassName(file_name))

-- 关闭打开的文件

io.close(file)

end

function ScriptHelper:GetConfig()

local file = io.open(".\\Config\\LuaConfig.txt", "rb")

io.input(file)

local arg = io.read()

io.close()

return arg

end

function main()

os.execute("mkdir .\\TmpFile")

local helper = ScriptHelper.New()

helper:CreateFile(helper.script_base_name .. "_ctrl", ".lua", function (class_name)

helper:CreateCtrl(class_name)

end)

helper:CreateFile(helper.script_base_name .. "_data", ".lua", function (class_name)

helper:CreateData(class_name)

end)

helper:CreateFile(helper.script_base_name .. "_view", ".lua",function (class_name)

helper:CreateView(class_name)

end)

end

main()

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言