Skip to content

Commit d4e40cb

Browse files
waschikvadv
andauthored
strings: register type in package and not globally (#47)
Co-authored-by: vadv <vadv.mkn@gmail.com>
1 parent cf36c91 commit d4e40cb

File tree

4 files changed

+23
-7
lines changed

4 files changed

+23
-7
lines changed

strings/builder.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ func newStringsBuilder(L *lua.LState) int {
3939
return 1
4040
}
4141

42-
func registerStringsBuilder(L *lua.LState) {
42+
func registerStringsBuilder(L *lua.LState) lua.LValue {
4343
mt := L.NewTypeMetatable(stringsBuilderType)
44-
L.SetGlobal(stringsBuilderType, mt)
4544
writerTable := lio.WriterFuncTable(L)
4645
L.SetField(writerTable, "string", L.NewFunction(stringsBuilderString))
4746
L.SetField(mt, "__index", writerTable)
47+
return mt
4848
}

strings/loader.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ func Preload(L *lua.LState) {
1414

1515
// Loader is the module loader function.
1616
func Loader(L *lua.LState) int {
17-
registerStringsReader(L)
18-
registerStringsBuilder(L)
17+
readerMt := registerStringsReader(L)
18+
builderMt := registerStringsBuilder(L)
1919

2020
t := L.NewTable()
21+
t.RawSetString("Reader", readerMt)
22+
t.RawSetString("Builder", builderMt)
2123
L.SetFuncs(t, api)
2224
L.Push(t)
2325
return 1

strings/reader.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ func newStringsReader(L *lua.LState) int {
3434
return 1
3535
}
3636

37-
func registerStringsReader(L *lua.LState) {
37+
func registerStringsReader(L *lua.LState) lua.LValue {
3838
mt := L.NewTypeMetatable(stringsReaderType)
39-
L.SetGlobal(stringsReaderType, mt)
4039
readerTable := io.ReaderFuncTable(L)
4140
L.SetField(mt, "__index", readerTable)
41+
return mt
4242
}

strings/test/test_api.lua

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,27 @@ function TestReader(t)
3636
assert(got == s, string.format("'%s' ~= '%s'", got, s))
3737
end
3838

39+
function TestReaderMetatable(t)
40+
local reader = strings.new_reader("")
41+
local got = getmetatable(reader)
42+
local expected = strings.Reader
43+
assert(got == expected, string.format("'%s' ~= '%s'", got, expected))
44+
end
45+
3946
function TestBuilder(t)
4047
local builder = strings.new_builder()
4148
builder:write("foo", "bar", 123)
4249
local got = builder:string()
4350
assert(got == "foobar123", string.format("'%s' ~= '%s'", got, "foobar123"))
4451
end
4552

53+
function TestBuilderMetatable(t)
54+
local builder = strings.new_builder()
55+
local got = getmetatable(builder)
56+
local expected = strings.Builder
57+
assert(got == expected, string.format("'%s' ~= '%s'", got, expected))
58+
end
59+
4660
function TestTrimSpace(t)
4761
tests = {
4862
{
@@ -114,4 +128,4 @@ function TestReadLine(t)
114128
line = reader:read("*l")
115129
assert(not line, line)
116130
end)
117-
end
131+
end

0 commit comments

Comments
 (0)