{"id":23569070,"url":"https://github.com/rolancia/go-lua-builder","last_synced_at":"2025-10-26T04:09:56.311Z","repository":{"id":61624965,"uuid":"421456355","full_name":"rolancia/go-lua-builder","owner":"rolancia","description":"go-lua supports scripting Lua in Golang","archived":false,"fork":false,"pushed_at":"2021-12-26T12:57:36.000Z","size":64,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-16T08:09:22.178Z","etag":null,"topics":["go","go-lua","go-lua-builder","go-lua-script","go-lua-scripting","lua","lua-builder","lua-script"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rolancia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-26T14:22:48.000Z","updated_at":"2025-04-09T16:04:11.000Z","dependencies_parsed_at":"2022-10-18T18:00:23.053Z","dependency_job_id":null,"html_url":"https://github.com/rolancia/go-lua-builder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rolancia/go-lua-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rolancia%2Fgo-lua-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rolancia%2Fgo-lua-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rolancia%2Fgo-lua-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rolancia%2Fgo-lua-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rolancia","download_url":"https://codeload.github.com/rolancia/go-lua-builder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rolancia%2Fgo-lua-builder/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264373753,"owners_count":23598077,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","go-lua","go-lua-builder","go-lua-script","go-lua-scripting","lua","lua-builder","lua-script"],"created_at":"2024-12-26T19:12:02.241Z","updated_at":"2025-10-26T04:09:51.260Z","avatar_url":"https://github.com/rolancia.png","language":"Go","readme":"# go-lua-builder\n\ngo-lua-builder supports scripting Lua in Golang.\n\neg. Redis Lua Scripts can be managed in Golang as Code\n\n---\n\n### Variable\n\n```lua\n-- Lua\nlocal a = nil\nlocal b = \"hello world\"\nlocal c = 2021\nlocal d = true\n\na = b\nb = \"hi world\"\n\nlocal t = {name=\"rolancia\"}\nt[\"name\"] = \"tae\"\nt[1] = 1994\n\nlocal arr = {1,2,\"hi\"}\narr[4] = 4\n```\n\n```go\n// Go\n_ = lua.NewLua(func (l *lua.DefaultBuilder) {\n    a := l.Local(lua.Nil())\n    b := l.Local(lua.Str(\"hello world\"))\n    c := l.Local(lua.Num(2021))\n    d := l.Local(lua.Bool(true))\n    \n    l.Assign(a, b)\n    l.Assign(b, lua.Str(\"hi world\"))\n    \n    t := l.Local(lua.Table(map[string]lua.Object{\n        \"name\": lua.Str(\"rolancia\"),\n    }))\n    l.Assign(lua.At(t, lua.Str(\"name\")), lua.Str(\"tae\"))\n    l.Assign(lua.At(t, lua.Num(1)), lua.Num(1994))\n\n    arr := l.Local(lua.Array(lua.Num(1), lua.Num(2), lua.Str(\"hi\")))\n    l.Assign(lua.At(arr, lua.Num(4)), lua.Num(4))\n})\n```\n\n### Operator\n\n```lua\n-- Lua\nlocal a = false\nlocal b = not a\nb = a\n\nlocal c = a + 1\nprint(c, 5 * 10)\n```\n\n```go\n// Go\n_ = lua.NewLua(func (l *lua.DefaultBuilder) {\n    a := l.Local(lua.Bool(false))\n    b := l.Local(lua.Not(a))\n    l.Assign(b, a)\n    // l.Do(lua.Op3(b, lua.Op(\"=\"), a))\n\t\n    c := l.Local(lua.Sum(a, lua.Num(1)))\n    // lua.Op3(a, lua.Op(\"+\"), lua.Num(1))\n    lualib.Print(l, c, lua.Mul(lua.Num(5), lua.Num(10)))\n    // lua.Op3(lua.Num(5), lua.Op(\"*\"), lua.Num(10))\n})\n\n```\n\n### Function Call\n\n```lua\n-- Lua\nlocal a = \"hello\"\nprint(a, \"world\")\nlocal n = tonumber(\"12345\")\nprint(n)\n```\n\n```go\n// Go\n_ = lua.NewLua(func (l *lua.DefaultBuilder) {\n    a := l.Local(lua.Str(\"hello\"))\n    lualib.Print(l, a, lua.Str(\"world\"))\n    n := l.Local(lualib.ToNumber(l, lua.Str(\"12345\")))\n    lualib.Print(l, n)\n})\n```\n\n### IF Statement\n\n```lua\n-- Lua\nlocal a = 1\nlocal b = 2\nlocal c = 0\nif a \u003c b then\n    c = a\nelse\n    c = b\nend\n```\n\n```go\n// Go\n_ = lua.NewLua(func (l *lua.DefaultBuilder) {\n    a := l.Local(lua.Num(1))\n    b := l.Local(lua.Num(2))\n    c := l.Local(lua.Num(0))\n    //l.If(lua.Cond(a, lua.Op(\"\u003c\"), b)).Then(func() {\n    l.If(lua.Cond(a, lua.Lt(), b)).Then(func() {\n        l.Assign(c, a)\n    }).Else(func() {\n        l.Assign(c, b)\t\n    }).End()\n})\n```\n\n### For\n```lua\n-- Lua\nfor i = 1,10,1\ndo\n    print(i)\nend\n\nfor i = 10,1,-1\ndo\n    if i \u003e= 5 then\n        print(i)\n    end\nend\n```\n\n```go\n// Go\n_ = lua.NewLua(func (l *lua.DefaultBuilder) {\n    l.For(1, 10, 1).Do(func(i lua.Variable) {\n    \tlualib.Print(l, i)\n    })\n    \n    l.For(10, 1, -1).Do(func(i lua.Variable) {\n    \tl.If(lua.Cond(i, lua.Gte(), lua.Num(5))).Then(func() {\n            lualib.Print(l, i)\t\n        }).End()\n    })\n})\n```\n\n### Return\n\n```lua\n-- Lua\nreturn \"bye world\"\nreturn \"hello\",\"world\",100\nreturn {1,2,3}\n```\n\n```go\n// Go\n_ = lua.NewLua(func (l *lua.DefaultBuilder) {\n    l.Return(lua.Str(\"bye world\"))\n    l.Return(lua.Str(\"hello\"), lua.Str(\"world\"), lua.Num(100))\n    l.Return(lua.Array(lua.Num(1), lua.Num(2), lua.Num(3)))\n})\n```\n\n### Appending Any Lua Code\n\n```lua\n-- Lua\nlocal a = 5\nprint(a)\n```\n\n```go\n// Go\n_ = lua.NewLua(func (l *lua.DefaultBuilder) {\n    l.Append([]byte(\"local a = 5\"))\n    l.AppendLine()\n    l.Append([]byte(\"print(a)\"))\n})\n```\n\n---\n## Features\n\n- Basic Syntax\n- Operator\n- Loop\n- ~~Iterator~~ - planned\n- Function Call\n- ~~Function Definition in Lua~~ - planned\n- ~~String Method~~ - planned\n- Array\n- Table\n- ~~Module~~ - planned\n- ~~Redis Lua Library~~ - planned\n- ~~Math Library~~ - planned\n- ~~Lua embeded functions~~ planned","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frolancia%2Fgo-lua-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frolancia%2Fgo-lua-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frolancia%2Fgo-lua-builder/lists"}