mirror of https://github.com/Hilbis/Hilbish
docs(hilbish.module): update autogen docs
parent
dfc3942087
commit
2af38c3bab
|
@ -8,15 +8,17 @@ menu:
|
|||
---
|
||||
|
||||
## Introduction
|
||||
The hilbish.module interface provides a function
|
||||
to load Hilbish plugins/modules.
|
||||
Hilbish modules are Go-written plugins (see https://pkg.go.dev/plugin)
|
||||
that are used to add functionality to Hilbish that cannot be written
|
||||
in Lua for any reason.
|
||||
The hilbish.module interface provides a function to load
|
||||
Hilbish plugins/modules. Hilbish modules are Go-written
|
||||
plugins (see https://pkg.go.dev/plugin) that are used to add functionality
|
||||
to Hilbish that cannot be written in Lua for any reason.
|
||||
|
||||
To make a valid native module, the Go plugin
|
||||
has to export a Loader function with a signature like so:
|
||||
`func(*rt.Runtime) rt.Value`.
|
||||
Note that you don't ever need to use the load function that is here as
|
||||
modules can be loaded with a `require` call like Lua C modules, and the
|
||||
search paths can be changed with the `paths` property here.
|
||||
|
||||
To make a valid native module, the Go plugin has to export a Loader function
|
||||
with a signature like so: `func(*rt.Runtime) rt.Value`.
|
||||
|
||||
`rt` in this case refers to the Runtime type at
|
||||
https://pkg.go.dev/github.com/arnodel/golua@master/runtime#Runtime
|
||||
|
@ -24,6 +26,22 @@ https://pkg.go.dev/github.com/arnodel/golua@master/runtime#Runtime
|
|||
Hilbish uses this package as its Lua runtime. You will need to read
|
||||
it to use it for a native plugin.
|
||||
|
||||
Here is some code for an example plugin:
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
rt "github.com/arnodel/golua/runtime"
|
||||
)
|
||||
|
||||
func Loader(rtm *rt.Runtime) rt.Value {
|
||||
return rt.StringValue("hello world!")
|
||||
}
|
||||
```
|
||||
|
||||
This can be compiled with `go build -buildmode=plugin plugin.go`.
|
||||
If you attempt to require and print the result (`print(require 'plugin')`), it will show "hello world!"
|
||||
|
||||
## Interface fields
|
||||
- `paths`: A list of paths to search when loading native modules. This is in the style of Lua search paths and will be used when requiring native modules. Example: `?.so;?/?.so`
|
||||
|
||||
|
|
Loading…
Reference in New Issue