mirror of
https://github.com/lune-org/lune.git
synced 2025-05-04 10:43:57 +01:00
feature: implement 'luau' types
lib
This commit is contained in:
parent
70c0c68bdf
commit
47a8b5dd14
1 changed files with 116 additions and 0 deletions
116
types/Luau.luau
Normal file
116
types/Luau.luau
Normal file
|
@ -0,0 +1,116 @@
|
|||
--[=[
|
||||
@interface CompileSettings
|
||||
@within Luau
|
||||
|
||||
The Luau compiler settings used in generating luau bytecode
|
||||
|
||||
This is a dictionary that may contain one or more of the following values:
|
||||
|
||||
* `optimizationLevel` - Sets the compiler option "optimizationLevel". Defaults to `1`
|
||||
* `coverageLevel` - Sets the compiler option "coverageLevel". Defaults to `0`
|
||||
* `debugLevel` - Sets the compiler option "debugLevel". Defaults to `1`
|
||||
|
||||
Documentation regarding what these values represent can be found here;
|
||||
* https://github.com/Roblox/luau/blob/bd229816c0a82a8590395416c81c333087f541fd/Compiler/include/luacode.h#L13
|
||||
]=]
|
||||
export type CompileSettings = {
|
||||
optimizationLevel: number,
|
||||
coverageLevel: number,
|
||||
debugLevel: number,
|
||||
}
|
||||
|
||||
--[=[
|
||||
@interface LoadSettings
|
||||
@within Luau
|
||||
|
||||
The Luau load settings are used for generating a lua function from either bytecode or sourcecode
|
||||
|
||||
This is a dictionary that may contain one or more of the following values:
|
||||
|
||||
* `debugName` - The debug name of the closure. Defaults to `string ["..."]`
|
||||
]=]
|
||||
export type LoadSettings = {
|
||||
debugName: string,
|
||||
}
|
||||
|
||||
--[=[
|
||||
@class Luau
|
||||
|
||||
Built-in library for generating luau bytecode & functions.
|
||||
|
||||
### Example usage
|
||||
|
||||
```lua
|
||||
local luau = require("@lune/luau")
|
||||
|
||||
local bytecode = luau.compile("print('Hello, World!')")
|
||||
local callableFn = luau.load(bytecode)
|
||||
|
||||
-- Additionally, we can skip the bytecode generation and load a callable function directly from the code itself.
|
||||
-- local callableFn = luau.load("print('Hello, World!')")
|
||||
|
||||
callableFn()
|
||||
```
|
||||
]=]
|
||||
local luau = {}
|
||||
|
||||
--[=[
|
||||
@within Luau
|
||||
|
||||
Compiles sourcecode into Luau bytecode
|
||||
|
||||
An error will be thrown if the sourcecode given isn't valid Luau code.
|
||||
|
||||
### Example usage
|
||||
|
||||
```lua
|
||||
local luau = require("@lune/luau")
|
||||
|
||||
local bytecode = luau.compile("print('Hello, World!')", {
|
||||
optimizationLevel: 1,
|
||||
coverageLevel: 0,
|
||||
debugLevel: 1,
|
||||
})
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
@param source The string that'll be compiled into bytecode
|
||||
@param compileSettings The luau compiler settings used when compiling the source string
|
||||
|
||||
@return luau bytecode
|
||||
]=]
|
||||
function luau.compile(source: string, compileSettings: CompileSettings): string
|
||||
return nil :: any
|
||||
end
|
||||
|
||||
--[=[
|
||||
@within Luau
|
||||
|
||||
Generates a function from either bytecode or sourcecode
|
||||
|
||||
An error will be thrown if the sourcecode given isn't valid luau code.
|
||||
|
||||
### Example usage
|
||||
|
||||
```lua
|
||||
local luau = require("@lune/luau")
|
||||
|
||||
local bytecode = luau.compile("print('Hello, World!')")
|
||||
local callableFn = luau.load(bytecode, {
|
||||
debugName = "'Hello, World'"
|
||||
})
|
||||
|
||||
callableFn()
|
||||
```
|
||||
|
||||
@param source Either bytecode or sourcecode
|
||||
@param loadSettings The load settings used when creating a callbable function
|
||||
|
||||
@return luau function
|
||||
]=]
|
||||
function luau.load(source: string, loadSettings: LoadSettings): string
|
||||
return nil :: any
|
||||
end
|
||||
|
||||
return luau
|
Loading…
Add table
Reference in a new issue