19 luar "layeh.com/gopher-luar"
21 lua "github.com/yuin/gopher-lua"
28 L.SetGlobal("import", luar.New(L, Import))
31 // LoadFile loads a lua file
32 func LoadFile(module string, file string, data string) error {
33 pluginDef := "local P = {};" + module + " = P;setmetatable(" + module + ", {__index = _G});setfenv(1, P);"
35 if fn, err := L.Load(strings.NewReader(pluginDef+data), file); err != nil {
39 return L.PCall(0, lua.MultRet, nil)
43 // Import allows a lua plugin to import a package
44 func Import(pkg string) *lua.LTable {
57 return importMathRand()
61 return importRuntime()
65 return importFilePath()
67 return importStrings()
79 func importFmt() *lua.LTable {
82 L.SetField(pkg, "tErrorf", luar.New(L, fmt.Errorf))
83 L.SetField(pkg, "Fprint", luar.New(L, fmt.Fprint))
84 L.SetField(pkg, "Fprintf", luar.New(L, fmt.Fprintf))
85 L.SetField(pkg, "Fprintln", luar.New(L, fmt.Fprintln))
86 L.SetField(pkg, "Fscan", luar.New(L, fmt.Fscan))
87 L.SetField(pkg, "Fscanf", luar.New(L, fmt.Fscanf))
88 L.SetField(pkg, "Fscanln", luar.New(L, fmt.Fscanln))
89 L.SetField(pkg, "Print", luar.New(L, fmt.Print))
90 L.SetField(pkg, "Printf", luar.New(L, fmt.Printf))
91 L.SetField(pkg, "Println", luar.New(L, fmt.Println))
92 L.SetField(pkg, "Scan", luar.New(L, fmt.Scan))
93 L.SetField(pkg, "Scanf", luar.New(L, fmt.Scanf))
94 L.SetField(pkg, "Scanln", luar.New(L, fmt.Scanln))
95 L.SetField(pkg, "Sprint", luar.New(L, fmt.Sprint))
96 L.SetField(pkg, "Sprintf", luar.New(L, fmt.Sprintf))
97 L.SetField(pkg, "Sprintln", luar.New(L, fmt.Sprintln))
98 L.SetField(pkg, "Sscan", luar.New(L, fmt.Sscan))
99 L.SetField(pkg, "Sscanf", luar.New(L, fmt.Sscanf))
100 L.SetField(pkg, "Sscanln", luar.New(L, fmt.Sscanln))
105 func importIo() *lua.LTable {
108 L.SetField(pkg, "Copy", luar.New(L, io.Copy))
109 L.SetField(pkg, "CopyN", luar.New(L, io.CopyN))
110 L.SetField(pkg, "EOF", luar.New(L, io.EOF))
111 L.SetField(pkg, "ErrClosedPipe", luar.New(L, io.ErrClosedPipe))
112 L.SetField(pkg, "ErrNoProgress", luar.New(L, io.ErrNoProgress))
113 L.SetField(pkg, "ErrShortBuffer", luar.New(L, io.ErrShortBuffer))
114 L.SetField(pkg, "ErrShortWrite", luar.New(L, io.ErrShortWrite))
115 L.SetField(pkg, "ErrUnexpectedEOF", luar.New(L, io.ErrUnexpectedEOF))
116 L.SetField(pkg, "LimitReader", luar.New(L, io.LimitReader))
117 L.SetField(pkg, "MultiReader", luar.New(L, io.MultiReader))
118 L.SetField(pkg, "MultiWriter", luar.New(L, io.MultiWriter))
119 L.SetField(pkg, "NewSectionReader", luar.New(L, io.NewSectionReader))
120 L.SetField(pkg, "Pipe", luar.New(L, io.Pipe))
121 L.SetField(pkg, "ReadAtLeast", luar.New(L, io.ReadAtLeast))
122 L.SetField(pkg, "ReadFull", luar.New(L, io.ReadFull))
123 L.SetField(pkg, "TeeReader", luar.New(L, io.TeeReader))
124 L.SetField(pkg, "WriteString", luar.New(L, io.WriteString))
129 func importIoUtil() *lua.LTable {
132 L.SetField(pkg, "ReadAll", luar.New(L, ioutil.ReadAll))
133 L.SetField(pkg, "ReadDir", luar.New(L, ioutil.ReadDir))
134 L.SetField(pkg, "ReadFile", luar.New(L, ioutil.ReadFile))
135 L.SetField(pkg, "WriteFile", luar.New(L, ioutil.WriteFile))
140 func importNet() *lua.LTable {
143 L.SetField(pkg, "CIDRMask", luar.New(L, net.CIDRMask))
144 L.SetField(pkg, "Dial", luar.New(L, net.Dial))
145 L.SetField(pkg, "DialIP", luar.New(L, net.DialIP))
146 L.SetField(pkg, "DialTCP", luar.New(L, net.DialTCP))
147 L.SetField(pkg, "DialTimeout", luar.New(L, net.DialTimeout))
148 L.SetField(pkg, "DialUDP", luar.New(L, net.DialUDP))
149 L.SetField(pkg, "DialUnix", luar.New(L, net.DialUnix))
150 L.SetField(pkg, "ErrWriteToConnected", luar.New(L, net.ErrWriteToConnected))
151 L.SetField(pkg, "FileConn", luar.New(L, net.FileConn))
152 L.SetField(pkg, "FileListener", luar.New(L, net.FileListener))
153 L.SetField(pkg, "FilePacketConn", luar.New(L, net.FilePacketConn))
154 L.SetField(pkg, "FlagBroadcast", luar.New(L, net.FlagBroadcast))
155 L.SetField(pkg, "FlagLoopback", luar.New(L, net.FlagLoopback))
156 L.SetField(pkg, "FlagMulticast", luar.New(L, net.FlagMulticast))
157 L.SetField(pkg, "FlagPointToPoint", luar.New(L, net.FlagPointToPoint))
158 L.SetField(pkg, "FlagUp", luar.New(L, net.FlagUp))
159 L.SetField(pkg, "IPv4", luar.New(L, net.IPv4))
160 L.SetField(pkg, "IPv4Mask", luar.New(L, net.IPv4Mask))
161 L.SetField(pkg, "IPv4allrouter", luar.New(L, net.IPv4allrouter))
162 L.SetField(pkg, "IPv4allsys", luar.New(L, net.IPv4allsys))
163 L.SetField(pkg, "IPv4bcast", luar.New(L, net.IPv4bcast))
164 L.SetField(pkg, "IPv4len", luar.New(L, net.IPv4len))
165 L.SetField(pkg, "IPv4zero", luar.New(L, net.IPv4zero))
166 L.SetField(pkg, "IPv6interfacelocalallnodes", luar.New(L, net.IPv6interfacelocalallnodes))
167 L.SetField(pkg, "IPv6len", luar.New(L, net.IPv6len))
168 L.SetField(pkg, "IPv6linklocalallnodes", luar.New(L, net.IPv6linklocalallnodes))
169 L.SetField(pkg, "IPv6linklocalallrouters", luar.New(L, net.IPv6linklocalallrouters))
170 L.SetField(pkg, "IPv6loopback", luar.New(L, net.IPv6loopback))
171 L.SetField(pkg, "IPv6unspecified", luar.New(L, net.IPv6unspecified))
172 L.SetField(pkg, "IPv6zero", luar.New(L, net.IPv6zero))
173 L.SetField(pkg, "InterfaceAddrs", luar.New(L, net.InterfaceAddrs))
174 L.SetField(pkg, "InterfaceByIndex", luar.New(L, net.InterfaceByIndex))
175 L.SetField(pkg, "InterfaceByName", luar.New(L, net.InterfaceByName))
176 L.SetField(pkg, "Interfaces", luar.New(L, net.Interfaces))
177 L.SetField(pkg, "JoinHostPort", luar.New(L, net.JoinHostPort))
178 L.SetField(pkg, "Listen", luar.New(L, net.Listen))
179 L.SetField(pkg, "ListenIP", luar.New(L, net.ListenIP))
180 L.SetField(pkg, "ListenMulticastUDP", luar.New(L, net.ListenMulticastUDP))
181 L.SetField(pkg, "ListenPacket", luar.New(L, net.ListenPacket))
182 L.SetField(pkg, "ListenTCP", luar.New(L, net.ListenTCP))
183 L.SetField(pkg, "ListenUDP", luar.New(L, net.ListenUDP))
184 L.SetField(pkg, "ListenUnix", luar.New(L, net.ListenUnix))
185 L.SetField(pkg, "ListenUnixgram", luar.New(L, net.ListenUnixgram))
186 L.SetField(pkg, "LookupAddr", luar.New(L, net.LookupAddr))
187 L.SetField(pkg, "LookupCNAME", luar.New(L, net.LookupCNAME))
188 L.SetField(pkg, "LookupHost", luar.New(L, net.LookupHost))
189 L.SetField(pkg, "LookupIP", luar.New(L, net.LookupIP))
190 L.SetField(pkg, "LookupMX", luar.New(L, net.LookupMX))
191 L.SetField(pkg, "LookupNS", luar.New(L, net.LookupNS))
192 L.SetField(pkg, "LookupPort", luar.New(L, net.LookupPort))
193 L.SetField(pkg, "LookupSRV", luar.New(L, net.LookupSRV))
194 L.SetField(pkg, "LookupTXT", luar.New(L, net.LookupTXT))
195 L.SetField(pkg, "ParseCIDR", luar.New(L, net.ParseCIDR))
196 L.SetField(pkg, "ParseIP", luar.New(L, net.ParseIP))
197 L.SetField(pkg, "ParseMAC", luar.New(L, net.ParseMAC))
198 L.SetField(pkg, "Pipe", luar.New(L, net.Pipe))
199 L.SetField(pkg, "ResolveIPAddr", luar.New(L, net.ResolveIPAddr))
200 L.SetField(pkg, "ResolveTCPAddr", luar.New(L, net.ResolveTCPAddr))
201 L.SetField(pkg, "ResolveUDPAddr", luar.New(L, net.ResolveUDPAddr))
202 L.SetField(pkg, "ResolveUnixAddr", luar.New(L, net.ResolveUnixAddr))
203 L.SetField(pkg, "SplitHostPort", luar.New(L, net.SplitHostPort))
208 func importMath() *lua.LTable {
211 L.SetField(pkg, "Abs", luar.New(L, math.Abs))
212 L.SetField(pkg, "Acos", luar.New(L, math.Acos))
213 L.SetField(pkg, "Acosh", luar.New(L, math.Acosh))
214 L.SetField(pkg, "Asin", luar.New(L, math.Asin))
215 L.SetField(pkg, "Asinh", luar.New(L, math.Asinh))
216 L.SetField(pkg, "Atan", luar.New(L, math.Atan))
217 L.SetField(pkg, "Atan2", luar.New(L, math.Atan2))
218 L.SetField(pkg, "Atanh", luar.New(L, math.Atanh))
219 L.SetField(pkg, "Cbrt", luar.New(L, math.Cbrt))
220 L.SetField(pkg, "Ceil", luar.New(L, math.Ceil))
221 L.SetField(pkg, "Copysign", luar.New(L, math.Copysign))
222 L.SetField(pkg, "Cos", luar.New(L, math.Cos))
223 L.SetField(pkg, "Cosh", luar.New(L, math.Cosh))
224 L.SetField(pkg, "Dim", luar.New(L, math.Dim))
225 L.SetField(pkg, "Erf", luar.New(L, math.Erf))
226 L.SetField(pkg, "Erfc", luar.New(L, math.Erfc))
227 L.SetField(pkg, "Exp", luar.New(L, math.Exp))
228 L.SetField(pkg, "Exp2", luar.New(L, math.Exp2))
229 L.SetField(pkg, "Expm1", luar.New(L, math.Expm1))
230 L.SetField(pkg, "Float32bits", luar.New(L, math.Float32bits))
231 L.SetField(pkg, "Float32frombits", luar.New(L, math.Float32frombits))
232 L.SetField(pkg, "Float64bits", luar.New(L, math.Float64bits))
233 L.SetField(pkg, "Float64frombits", luar.New(L, math.Float64frombits))
234 L.SetField(pkg, "Floor", luar.New(L, math.Floor))
235 L.SetField(pkg, "Frexp", luar.New(L, math.Frexp))
236 L.SetField(pkg, "Gamma", luar.New(L, math.Gamma))
237 L.SetField(pkg, "Hypot", luar.New(L, math.Hypot))
238 L.SetField(pkg, "Ilogb", luar.New(L, math.Ilogb))
239 L.SetField(pkg, "Inf", luar.New(L, math.Inf))
240 L.SetField(pkg, "IsInf", luar.New(L, math.IsInf))
241 L.SetField(pkg, "IsNaN", luar.New(L, math.IsNaN))
242 L.SetField(pkg, "J0", luar.New(L, math.J0))
243 L.SetField(pkg, "J1", luar.New(L, math.J1))
244 L.SetField(pkg, "Jn", luar.New(L, math.Jn))
245 L.SetField(pkg, "Ldexp", luar.New(L, math.Ldexp))
246 L.SetField(pkg, "Lgamma", luar.New(L, math.Lgamma))
247 L.SetField(pkg, "Log", luar.New(L, math.Log))
248 L.SetField(pkg, "Log10", luar.New(L, math.Log10))
249 L.SetField(pkg, "Log1p", luar.New(L, math.Log1p))
250 L.SetField(pkg, "Log2", luar.New(L, math.Log2))
251 L.SetField(pkg, "Logb", luar.New(L, math.Logb))
252 L.SetField(pkg, "Max", luar.New(L, math.Max))
253 L.SetField(pkg, "Min", luar.New(L, math.Min))
254 L.SetField(pkg, "Mod", luar.New(L, math.Mod))
255 L.SetField(pkg, "Modf", luar.New(L, math.Modf))
256 L.SetField(pkg, "NaN", luar.New(L, math.NaN))
257 L.SetField(pkg, "Nextafter", luar.New(L, math.Nextafter))
258 L.SetField(pkg, "Pow", luar.New(L, math.Pow))
259 L.SetField(pkg, "Pow10", luar.New(L, math.Pow10))
260 L.SetField(pkg, "Remainder", luar.New(L, math.Remainder))
261 L.SetField(pkg, "Signbit", luar.New(L, math.Signbit))
262 L.SetField(pkg, "Sin", luar.New(L, math.Sin))
263 L.SetField(pkg, "Sincos", luar.New(L, math.Sincos))
264 L.SetField(pkg, "Sinh", luar.New(L, math.Sinh))
265 L.SetField(pkg, "Sqrt", luar.New(L, math.Sqrt))
266 L.SetField(pkg, "Tan", luar.New(L, math.Tan))
267 L.SetField(pkg, "Tanh", luar.New(L, math.Tanh))
268 L.SetField(pkg, "Trunc", luar.New(L, math.Trunc))
269 L.SetField(pkg, "Y0", luar.New(L, math.Y0))
270 L.SetField(pkg, "Y1", luar.New(L, math.Y1))
271 L.SetField(pkg, "Yn", luar.New(L, math.Yn))
276 func importMathRand() *lua.LTable {
279 L.SetField(pkg, "ExpFloat64", luar.New(L, rand.ExpFloat64))
280 L.SetField(pkg, "Float32", luar.New(L, rand.Float32))
281 L.SetField(pkg, "Float64", luar.New(L, rand.Float64))
282 L.SetField(pkg, "Int", luar.New(L, rand.Int))
283 L.SetField(pkg, "Int31", luar.New(L, rand.Int31))
284 L.SetField(pkg, "Int31n", luar.New(L, rand.Int31n))
285 L.SetField(pkg, "Int63", luar.New(L, rand.Int63))
286 L.SetField(pkg, "Int63n", luar.New(L, rand.Int63n))
287 L.SetField(pkg, "Intn", luar.New(L, rand.Intn))
288 L.SetField(pkg, "NormFloat64", luar.New(L, rand.NormFloat64))
289 L.SetField(pkg, "Perm", luar.New(L, rand.Perm))
290 L.SetField(pkg, "Seed", luar.New(L, rand.Seed))
291 L.SetField(pkg, "Uint32", luar.New(L, rand.Uint32))
296 func importOs() *lua.LTable {
299 L.SetField(pkg, "Args", luar.New(L, os.Args))
300 L.SetField(pkg, "Chdir", luar.New(L, os.Chdir))
301 L.SetField(pkg, "Chmod", luar.New(L, os.Chmod))
302 L.SetField(pkg, "Chown", luar.New(L, os.Chown))
303 L.SetField(pkg, "Chtimes", luar.New(L, os.Chtimes))
304 L.SetField(pkg, "Clearenv", luar.New(L, os.Clearenv))
305 L.SetField(pkg, "Create", luar.New(L, os.Create))
306 L.SetField(pkg, "DevNull", luar.New(L, os.DevNull))
307 L.SetField(pkg, "Environ", luar.New(L, os.Environ))
308 L.SetField(pkg, "ErrExist", luar.New(L, os.ErrExist))
309 L.SetField(pkg, "ErrInvalid", luar.New(L, os.ErrInvalid))
310 L.SetField(pkg, "ErrNotExist", luar.New(L, os.ErrNotExist))
311 L.SetField(pkg, "ErrPermission", luar.New(L, os.ErrPermission))
312 L.SetField(pkg, "Exit", luar.New(L, os.Exit))
313 L.SetField(pkg, "Expand", luar.New(L, os.Expand))
314 L.SetField(pkg, "ExpandEnv", luar.New(L, os.ExpandEnv))
315 L.SetField(pkg, "FindProcess", luar.New(L, os.FindProcess))
316 L.SetField(pkg, "Getegid", luar.New(L, os.Getegid))
317 L.SetField(pkg, "Getenv", luar.New(L, os.Getenv))
318 L.SetField(pkg, "Geteuid", luar.New(L, os.Geteuid))
319 L.SetField(pkg, "Getgid", luar.New(L, os.Getgid))
320 L.SetField(pkg, "Getgroups", luar.New(L, os.Getgroups))
321 L.SetField(pkg, "Getpagesize", luar.New(L, os.Getpagesize))
322 L.SetField(pkg, "Getpid", luar.New(L, os.Getpid))
323 L.SetField(pkg, "Getuid", luar.New(L, os.Getuid))
324 L.SetField(pkg, "Getwd", luar.New(L, os.Getwd))
325 L.SetField(pkg, "Hostname", luar.New(L, os.Hostname))
326 L.SetField(pkg, "Interrupt", luar.New(L, os.Interrupt))
327 L.SetField(pkg, "IsExist", luar.New(L, os.IsExist))
328 L.SetField(pkg, "IsNotExist", luar.New(L, os.IsNotExist))
329 L.SetField(pkg, "IsPathSeparator", luar.New(L, os.IsPathSeparator))
330 L.SetField(pkg, "IsPermission", luar.New(L, os.IsPermission))
331 L.SetField(pkg, "Kill", luar.New(L, os.Kill))
332 L.SetField(pkg, "Lchown", luar.New(L, os.Lchown))
333 L.SetField(pkg, "Link", luar.New(L, os.Link))
334 L.SetField(pkg, "Lstat", luar.New(L, os.Lstat))
335 L.SetField(pkg, "Mkdir", luar.New(L, os.Mkdir))
336 L.SetField(pkg, "MkdirAll", luar.New(L, os.MkdirAll))
337 L.SetField(pkg, "ModeAppend", luar.New(L, os.ModeAppend))
338 L.SetField(pkg, "ModeCharDevice", luar.New(L, os.ModeCharDevice))
339 L.SetField(pkg, "ModeDevice", luar.New(L, os.ModeDevice))
340 L.SetField(pkg, "ModeDir", luar.New(L, os.ModeDir))
341 L.SetField(pkg, "ModeExclusive", luar.New(L, os.ModeExclusive))
342 L.SetField(pkg, "ModeNamedPipe", luar.New(L, os.ModeNamedPipe))
343 L.SetField(pkg, "ModePerm", luar.New(L, os.ModePerm))
344 L.SetField(pkg, "ModeSetgid", luar.New(L, os.ModeSetgid))
345 L.SetField(pkg, "ModeSetuid", luar.New(L, os.ModeSetuid))
346 L.SetField(pkg, "ModeSocket", luar.New(L, os.ModeSocket))
347 L.SetField(pkg, "ModeSticky", luar.New(L, os.ModeSticky))
348 L.SetField(pkg, "ModeSymlink", luar.New(L, os.ModeSymlink))
349 L.SetField(pkg, "ModeTemporary", luar.New(L, os.ModeTemporary))
350 L.SetField(pkg, "ModeType", luar.New(L, os.ModeType))
351 L.SetField(pkg, "NewFile", luar.New(L, os.NewFile))
352 L.SetField(pkg, "NewSyscallError", luar.New(L, os.NewSyscallError))
353 L.SetField(pkg, "O_APPEND", luar.New(L, os.O_APPEND))
354 L.SetField(pkg, "O_CREATE", luar.New(L, os.O_CREATE))
355 L.SetField(pkg, "O_EXCL", luar.New(L, os.O_EXCL))
356 L.SetField(pkg, "O_RDONLY", luar.New(L, os.O_RDONLY))
357 L.SetField(pkg, "O_RDWR", luar.New(L, os.O_RDWR))
358 L.SetField(pkg, "O_SYNC", luar.New(L, os.O_SYNC))
359 L.SetField(pkg, "O_TRUNC", luar.New(L, os.O_TRUNC))
360 L.SetField(pkg, "O_WRONLY", luar.New(L, os.O_WRONLY))
361 L.SetField(pkg, "Open", luar.New(L, os.Open))
362 L.SetField(pkg, "OpenFile", luar.New(L, os.OpenFile))
363 L.SetField(pkg, "PathListSeparator", luar.New(L, os.PathListSeparator))
364 L.SetField(pkg, "PathSeparator", luar.New(L, os.PathSeparator))
365 L.SetField(pkg, "Pipe", luar.New(L, os.Pipe))
366 L.SetField(pkg, "Readlink", luar.New(L, os.Readlink))
367 L.SetField(pkg, "Remove", luar.New(L, os.Remove))
368 L.SetField(pkg, "RemoveAll", luar.New(L, os.RemoveAll))
369 L.SetField(pkg, "Rename", luar.New(L, os.Rename))
370 L.SetField(pkg, "SEEK_CUR", luar.New(L, os.SEEK_CUR))
371 L.SetField(pkg, "SEEK_END", luar.New(L, os.SEEK_END))
372 L.SetField(pkg, "SEEK_SET", luar.New(L, os.SEEK_SET))
373 L.SetField(pkg, "SameFile", luar.New(L, os.SameFile))
374 L.SetField(pkg, "Setenv", luar.New(L, os.Setenv))
375 L.SetField(pkg, "StartProcess", luar.New(L, os.StartProcess))
376 L.SetField(pkg, "Stat", luar.New(L, os.Stat))
377 L.SetField(pkg, "Stderr", luar.New(L, os.Stderr))
378 L.SetField(pkg, "Stdin", luar.New(L, os.Stdin))
379 L.SetField(pkg, "Stdout", luar.New(L, os.Stdout))
380 L.SetField(pkg, "Symlink", luar.New(L, os.Symlink))
381 L.SetField(pkg, "TempDir", luar.New(L, os.TempDir))
382 L.SetField(pkg, "Truncate", luar.New(L, os.Truncate))
387 func importRuntime() *lua.LTable {
390 L.SetField(pkg, "GC", luar.New(L, runtime.GC))
391 L.SetField(pkg, "GOARCH", luar.New(L, runtime.GOARCH))
392 L.SetField(pkg, "GOMAXPROCS", luar.New(L, runtime.GOMAXPROCS))
393 L.SetField(pkg, "GOOS", luar.New(L, runtime.GOOS))
394 L.SetField(pkg, "GOROOT", luar.New(L, runtime.GOROOT))
399 func importPath() *lua.LTable {
402 L.SetField(pkg, "Base", luar.New(L, path.Base))
403 L.SetField(pkg, "Clean", luar.New(L, path.Clean))
404 L.SetField(pkg, "Dir", luar.New(L, path.Dir))
405 L.SetField(pkg, "ErrBadPattern", luar.New(L, path.ErrBadPattern))
406 L.SetField(pkg, "Ext", luar.New(L, path.Ext))
407 L.SetField(pkg, "IsAbs", luar.New(L, path.IsAbs))
408 L.SetField(pkg, "Join", luar.New(L, path.Join))
409 L.SetField(pkg, "Match", luar.New(L, path.Match))
410 L.SetField(pkg, "Split", luar.New(L, path.Split))
415 func importFilePath() *lua.LTable {
418 L.SetField(pkg, "Join", luar.New(L, filepath.Join))
419 L.SetField(pkg, "Clean", luar.New(L, filepath.Join))
420 L.SetField(pkg, "Abs", luar.New(L, filepath.Abs))
421 L.SetField(pkg, "Base", luar.New(L, filepath.Base))
422 L.SetField(pkg, "Clean", luar.New(L, filepath.Clean))
423 L.SetField(pkg, "Dir", luar.New(L, filepath.Dir))
424 L.SetField(pkg, "EvalSymlinks", luar.New(L, filepath.EvalSymlinks))
425 L.SetField(pkg, "Ext", luar.New(L, filepath.Ext))
426 L.SetField(pkg, "FromSlash", luar.New(L, filepath.FromSlash))
427 L.SetField(pkg, "Glob", luar.New(L, filepath.Glob))
428 L.SetField(pkg, "HasPrefix", luar.New(L, filepath.HasPrefix))
429 L.SetField(pkg, "IsAbs", luar.New(L, filepath.IsAbs))
430 L.SetField(pkg, "Join", luar.New(L, filepath.Join))
431 L.SetField(pkg, "Match", luar.New(L, filepath.Match))
432 L.SetField(pkg, "Rel", luar.New(L, filepath.Rel))
433 L.SetField(pkg, "Split", luar.New(L, filepath.Split))
434 L.SetField(pkg, "SplitList", luar.New(L, filepath.SplitList))
435 L.SetField(pkg, "ToSlash", luar.New(L, filepath.ToSlash))
436 L.SetField(pkg, "VolumeName", luar.New(L, filepath.VolumeName))
441 func importStrings() *lua.LTable {
444 L.SetField(pkg, "Contains", luar.New(L, strings.Contains))
445 L.SetField(pkg, "ContainsAny", luar.New(L, strings.ContainsAny))
446 L.SetField(pkg, "ContainsRune", luar.New(L, strings.ContainsRune))
447 L.SetField(pkg, "Count", luar.New(L, strings.Count))
448 L.SetField(pkg, "EqualFold", luar.New(L, strings.EqualFold))
449 L.SetField(pkg, "Fields", luar.New(L, strings.Fields))
450 L.SetField(pkg, "FieldsFunc", luar.New(L, strings.FieldsFunc))
451 L.SetField(pkg, "HasPrefix", luar.New(L, strings.HasPrefix))
452 L.SetField(pkg, "HasSuffix", luar.New(L, strings.HasSuffix))
453 L.SetField(pkg, "Index", luar.New(L, strings.Index))
454 L.SetField(pkg, "IndexAny", luar.New(L, strings.IndexAny))
455 L.SetField(pkg, "IndexByte", luar.New(L, strings.IndexByte))
456 L.SetField(pkg, "IndexFunc", luar.New(L, strings.IndexFunc))
457 L.SetField(pkg, "IndexRune", luar.New(L, strings.IndexRune))
458 L.SetField(pkg, "Join", luar.New(L, strings.Join))
459 L.SetField(pkg, "LastIndex", luar.New(L, strings.LastIndex))
460 L.SetField(pkg, "LastIndexAny", luar.New(L, strings.LastIndexAny))
461 L.SetField(pkg, "LastIndexFunc", luar.New(L, strings.LastIndexFunc))
462 L.SetField(pkg, "Map", luar.New(L, strings.Map))
463 L.SetField(pkg, "NewReader", luar.New(L, strings.NewReader))
464 L.SetField(pkg, "NewReplacer", luar.New(L, strings.NewReplacer))
465 L.SetField(pkg, "Repeat", luar.New(L, strings.Repeat))
466 L.SetField(pkg, "Replace", luar.New(L, strings.Replace))
467 L.SetField(pkg, "Split", luar.New(L, strings.Split))
468 L.SetField(pkg, "SplitAfter", luar.New(L, strings.SplitAfter))
469 L.SetField(pkg, "SplitAfterN", luar.New(L, strings.SplitAfterN))
470 L.SetField(pkg, "SplitN", luar.New(L, strings.SplitN))
471 L.SetField(pkg, "Title", luar.New(L, strings.Title))
472 L.SetField(pkg, "ToLower", luar.New(L, strings.ToLower))
473 L.SetField(pkg, "ToLowerSpecial", luar.New(L, strings.ToLowerSpecial))
474 L.SetField(pkg, "ToTitle", luar.New(L, strings.ToTitle))
475 L.SetField(pkg, "ToTitleSpecial", luar.New(L, strings.ToTitleSpecial))
476 L.SetField(pkg, "ToUpper", luar.New(L, strings.ToUpper))
477 L.SetField(pkg, "ToUpperSpecial", luar.New(L, strings.ToUpperSpecial))
478 L.SetField(pkg, "Trim", luar.New(L, strings.Trim))
479 L.SetField(pkg, "TrimFunc", luar.New(L, strings.TrimFunc))
480 L.SetField(pkg, "TrimLeft", luar.New(L, strings.TrimLeft))
481 L.SetField(pkg, "TrimLeftFunc", luar.New(L, strings.TrimLeftFunc))
482 L.SetField(pkg, "TrimPrefix", luar.New(L, strings.TrimPrefix))
483 L.SetField(pkg, "TrimRight", luar.New(L, strings.TrimRight))
484 L.SetField(pkg, "TrimRightFunc", luar.New(L, strings.TrimRightFunc))
485 L.SetField(pkg, "TrimSpace", luar.New(L, strings.TrimSpace))
486 L.SetField(pkg, "TrimSuffix", luar.New(L, strings.TrimSuffix))
491 func importRegexp() *lua.LTable {
494 L.SetField(pkg, "Match", luar.New(L, regexp.Match))
495 L.SetField(pkg, "MatchReader", luar.New(L, regexp.MatchReader))
496 L.SetField(pkg, "MatchString", luar.New(L, regexp.MatchString))
497 L.SetField(pkg, "QuoteMeta", luar.New(L, regexp.QuoteMeta))
498 L.SetField(pkg, "Compile", luar.New(L, regexp.Compile))
499 L.SetField(pkg, "CompilePOSIX", luar.New(L, regexp.CompilePOSIX))
500 L.SetField(pkg, "MustCompile", luar.New(L, regexp.MustCompile))
501 L.SetField(pkg, "MustCompilePOSIX", luar.New(L, regexp.MustCompilePOSIX))
506 func importErrors() *lua.LTable {
509 L.SetField(pkg, "New", luar.New(L, errors.New))
514 func importTime() *lua.LTable {
517 L.SetField(pkg, "After", luar.New(L, time.After))
518 L.SetField(pkg, "Sleep", luar.New(L, time.Sleep))
519 L.SetField(pkg, "Tick", luar.New(L, time.Tick))
520 L.SetField(pkg, "Since", luar.New(L, time.Since))
521 L.SetField(pkg, "FixedZone", luar.New(L, time.FixedZone))
522 L.SetField(pkg, "LoadLocation", luar.New(L, time.LoadLocation))
523 L.SetField(pkg, "NewTicker", luar.New(L, time.NewTicker))
524 L.SetField(pkg, "Date", luar.New(L, time.Date))
525 L.SetField(pkg, "Now", luar.New(L, time.Now))
526 L.SetField(pkg, "Parse", luar.New(L, time.Parse))
527 L.SetField(pkg, "ParseDuration", luar.New(L, time.ParseDuration))
528 L.SetField(pkg, "ParseInLocation", luar.New(L, time.ParseInLocation))
529 L.SetField(pkg, "Unix", luar.New(L, time.Unix))
530 L.SetField(pkg, "AfterFunc", luar.New(L, time.AfterFunc))
531 L.SetField(pkg, "NewTimer", luar.New(L, time.NewTimer))
532 L.SetField(pkg, "Nanosecond", luar.New(L, time.Nanosecond))
533 L.SetField(pkg, "Microsecond", luar.New(L, time.Microsecond))
534 L.SetField(pkg, "Millisecond", luar.New(L, time.Millisecond))
535 L.SetField(pkg, "Second", luar.New(L, time.Second))
536 L.SetField(pkg, "Minute", luar.New(L, time.Minute))
537 L.SetField(pkg, "Hour", luar.New(L, time.Hour))