diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..b01dc8a
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,17 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = tab
+indent_size = 4
+
+[*.{json,jsonc,json5]
+indent_style = space
+indent_size = 4
+
+[*.{yml,yaml]
+indent_style = space
+indent_size = 2
diff --git a/.lune/data/test.csv b/.lune/data/test.csv
index dbc7627..4580894 100644
--- a/.lune/data/test.csv
+++ b/.lune/data/test.csv
@@ -1,4 +1,4 @@
Header1,Header2,Header3
Hello,World,!
1,2,3
-Foo,Bar,Baz
\ No newline at end of file
+Foo,Bar,Baz
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 46bada5..c7600fe 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,404 +12,404 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
-- Added auto-generated API reference pages and documentation using GitHub wiki pages
-- Added support for `query` in `net.request` parameters, which enables usage of query parameters in URLs without having to manually URL encode values.
-- Added a new function `fs.move` to move / rename a file or directory from one path to another.
-- Implemented a new task scheduler which resolves several long-standing issues:
+- Added auto-generated API reference pages and documentation using GitHub wiki pages
+- Added support for `query` in `net.request` parameters, which enables usage of query parameters in URLs without having to manually URL encode values.
+- Added a new function `fs.move` to move / rename a file or directory from one path to another.
+- Implemented a new task scheduler which resolves several long-standing issues:
- - Issues with yielding across the C-call/metamethod boundary no longer occur when calling certain async APIs that Lune provides.
- - Ordering of interleaved calls to `task.spawn/task.defer` is now completely deterministic, deferring is now guaranteed to run last even in these cases.
- - The minimum wait time possible when using `task.wait` and minimum delay time using `task.delay` are now much smaller, and only limited by the underlying OS implementation. For most systems this means `task.wait` and `task.delay` are now accurate down to about 5 milliseconds or less.
+ - Issues with yielding across the C-call/metamethod boundary no longer occur when calling certain async APIs that Lune provides.
+ - Ordering of interleaved calls to `task.spawn/task.defer` is now completely deterministic, deferring is now guaranteed to run last even in these cases.
+ - The minimum wait time possible when using `task.wait` and minimum delay time using `task.delay` are now much smaller, and only limited by the underlying OS implementation. For most systems this means `task.wait` and `task.delay` are now accurate down to about 5 milliseconds or less.
### Changed
-- Type definitions are now bundled as part of the Lune executable, meaning they no longer need to be downloaded.
- - `lune --generate-selene-types` will generate the Selene type definitions file, replacing `lune --download-selene-types`
- - `lune --generate-luau-types` will generate the Luau type definitions file, replacing `lune --download-luau-types`
-- Improved accuracy of Selene type definitions, strongly typed arrays are now used where possible
-- Improved error handling and messages for `net.serve`
-- Improved error handling and messages for `stdio.prompt`
-- File path representations on Windows now use legacy paths instead of UNC paths wherever possible, preventing some confusing cases where file paths don't work as expected
+- Type definitions are now bundled as part of the Lune executable, meaning they no longer need to be downloaded.
+ - `lune --generate-selene-types` will generate the Selene type definitions file, replacing `lune --download-selene-types`
+ - `lune --generate-luau-types` will generate the Luau type definitions file, replacing `lune --download-luau-types`
+- Improved accuracy of Selene type definitions, strongly typed arrays are now used where possible
+- Improved error handling and messages for `net.serve`
+- Improved error handling and messages for `stdio.prompt`
+- File path representations on Windows now use legacy paths instead of UNC paths wherever possible, preventing some confusing cases where file paths don't work as expected
### Fixed
-- Fixed `process.cwd` not having the correct ending path separator on Windows
-- Fixed remaining edge cases where the `task` and `coroutine` libraries weren't interoperable
-- Fixed `task.delay` keeping the script running even if it was cancelled using `task.cancel`
-- Fixed `stdio.prompt` blocking all other lua threads while prompting for input
+- Fixed `process.cwd` not having the correct ending path separator on Windows
+- Fixed remaining edge cases where the `task` and `coroutine` libraries weren't interoperable
+- Fixed `task.delay` keeping the script running even if it was cancelled using `task.cancel`
+- Fixed `stdio.prompt` blocking all other lua threads while prompting for input
## `0.4.0` - February 11th, 2023
### Added
-- ### Web Sockets
+- ### Web Sockets
- `net` now supports web sockets for both clients and servers!
- Note that the web socket object is identical on both client and
- server, but how you retrieve a web socket object is different.
+ `net` now supports web sockets for both clients and servers!
+ Note that the web socket object is identical on both client and
+ server, but how you retrieve a web socket object is different.
- #### Server API
+ #### Server API
- The server web socket API is an extension of the existing `net.serve` function.
- This allows for serving both normal HTTP requests and web socket requests on the same port.
+ The server web socket API is an extension of the existing `net.serve` function.
+ This allows for serving both normal HTTP requests and web socket requests on the same port.
- Example usage:
+ Example usage:
- ```lua
- net.serve(8080, {
- handleRequest = function(request)
- return "Hello, world!"
- end,
- handleWebSocket = function(socket)
- task.delay(10, function()
- socket.send("Timed out!")
- socket.close()
- end)
- -- The message will be nil when the socket has closed
- repeat
- local messageFromClient = socket.next()
- if messageFromClient == "Ping" then
- socket.send("Pong")
- end
- until messageFromClient == nil
- end,
- })
- ```
+ ```lua
+ net.serve(8080, {
+ handleRequest = function(request)
+ return "Hello, world!"
+ end,
+ handleWebSocket = function(socket)
+ task.delay(10, function()
+ socket.send("Timed out!")
+ socket.close()
+ end)
+ -- The message will be nil when the socket has closed
+ repeat
+ local messageFromClient = socket.next()
+ if messageFromClient == "Ping" then
+ socket.send("Pong")
+ end
+ until messageFromClient == nil
+ end,
+ })
+ ```
- #### Client API
+ #### Client API
- Example usage:
+ Example usage:
- ```lua
- local socket = net.socket("ws://localhost:8080")
+ ```lua
+ local socket = net.socket("ws://localhost:8080")
- socket.send("Ping")
+ socket.send("Ping")
- task.delay(5, function()
- socket.close()
- end)
+ task.delay(5, function()
+ socket.close()
+ end)
- -- The message will be nil when the socket has closed
- repeat
- local messageFromServer = socket.next()
- if messageFromServer == "Ping" then
- socket.send("Pong")
- end
- until messageFromServer == nil
- ```
+ -- The message will be nil when the socket has closed
+ repeat
+ local messageFromServer = socket.next()
+ if messageFromServer == "Ping" then
+ socket.send("Pong")
+ end
+ until messageFromServer == nil
+ ```
### Changed
-- `net.serve` now returns a `NetServeHandle` which can be used to stop serving requests safely.
+- `net.serve` now returns a `NetServeHandle` which can be used to stop serving requests safely.
- Example usage:
+ Example usage:
- ```lua
- local handle = net.serve(8080, function()
- return "Hello, world!"
- end)
+ ```lua
+ local handle = net.serve(8080, function()
+ return "Hello, world!"
+ end)
- print("Shutting down after 1 second...")
- task.wait(1)
- handle.stop()
- print("Shut down succesfully")
- ```
+ print("Shutting down after 1 second...")
+ task.wait(1)
+ handle.stop()
+ print("Shut down succesfully")
+ ```
-- The third and optional argument of `process.spawn` is now a global type `ProcessSpawnOptions`.
-- Setting `cwd` in the options for `process.spawn` to a path starting with a tilde (`~`) will now use a path relative to the platform-specific home / user directory.
-- `NetRequest` query parameters value has been changed to be a table of key-value pairs similar to `process.env`.
- If any query parameter is specified more than once in the request url, the value chosen will be the last one that was specified.
-- The internal http client for `net.request` now reuses headers and connections for more efficient requests.
-- Refactored the Lune rust crate to be much more user-friendly and documented all of the public functions.
+- The third and optional argument of `process.spawn` is now a global type `ProcessSpawnOptions`.
+- Setting `cwd` in the options for `process.spawn` to a path starting with a tilde (`~`) will now use a path relative to the platform-specific home / user directory.
+- `NetRequest` query parameters value has been changed to be a table of key-value pairs similar to `process.env`.
+ If any query parameter is specified more than once in the request url, the value chosen will be the last one that was specified.
+- The internal http client for `net.request` now reuses headers and connections for more efficient requests.
+- Refactored the Lune rust crate to be much more user-friendly and documented all of the public functions.
### Fixed
-- Fixed `process.spawn` blocking all lua threads if the spawned child process yields.
+- Fixed `process.spawn` blocking all lua threads if the spawned child process yields.
## `0.3.0` - February 6th, 2023
### Added
-- Added a new global `stdio` which replaces `console`
-- Added `stdio.write` which writes a string directly to stdout, without any newlines
-- Added `stdio.ewrite` which writes a string directly to stderr, without any newlines
-- Added `stdio.prompt` which will prompt the user for different kinds of input
+- Added a new global `stdio` which replaces `console`
+- Added `stdio.write` which writes a string directly to stdout, without any newlines
+- Added `stdio.ewrite` which writes a string directly to stderr, without any newlines
+- Added `stdio.prompt` which will prompt the user for different kinds of input
- Example usage:
+ Example usage:
- ```lua
- local text = stdio.prompt()
+ ```lua
+ local text = stdio.prompt()
- local text2 = stdio.prompt("text", "Please write some text")
+ local text2 = stdio.prompt("text", "Please write some text")
- local didConfirm = stdio.prompt("confirm", "Please confirm this action")
+ local didConfirm = stdio.prompt("confirm", "Please confirm this action")
- local optionIndex = stdio.prompt("select", "Please select an option", { "one", "two", "three" })
+ local optionIndex = stdio.prompt("select", "Please select an option", { "one", "two", "three" })
- local optionIndices = stdio.prompt(
- "multiselect",
- "Please select one or more options",
- { "one", "two", "three", "four", "five" }
- )
- ```
+ local optionIndices = stdio.prompt(
+ "multiselect",
+ "Please select one or more options",
+ { "one", "two", "three", "four", "five" }
+ )
+ ```
### Changed
-- Migrated `console.setColor/resetColor` and `console.setStyle/resetStyle` to `stdio.color` and `stdio.style` to allow for more flexibility in custom printing using ANSI color codes. Check the documentation for new usage and behavior.
-- Migrated the pretty-printing and formatting behavior of `console.log/info/warn/error` to the standard Luau printing functions.
+- Migrated `console.setColor/resetColor` and `console.setStyle/resetStyle` to `stdio.color` and `stdio.style` to allow for more flexibility in custom printing using ANSI color codes. Check the documentation for new usage and behavior.
+- Migrated the pretty-printing and formatting behavior of `console.log/info/warn/error` to the standard Luau printing functions.
### Removed
-- Removed printing functions `console.log/info/warn/error` in favor of regular global functions for printing.
+- Removed printing functions `console.log/info/warn/error` in favor of regular global functions for printing.
### Fixed
-- Fixed scripts hanging indefinitely on error
+- Fixed scripts hanging indefinitely on error
## `0.2.2` - February 5th, 2023
### Added
-- Added global types for networking & child process APIs
- - `net.request` gets `NetFetchParams` and `NetFetchResponse` for its argument and return value
- - `net.serve` gets `NetRequest` and `NetResponse` for the handler function argument and return value
- - `process.spawn` gets `ProcessSpawnOptions` for its third and optional parameter
+- Added global types for networking & child process APIs
+ - `net.request` gets `NetFetchParams` and `NetFetchResponse` for its argument and return value
+ - `net.serve` gets `NetRequest` and `NetResponse` for the handler function argument and return value
+ - `process.spawn` gets `ProcessSpawnOptions` for its third and optional parameter
### Changed
-- Reorganize repository structure to take advantage of cargo workspaces, improves compile times
+- Reorganize repository structure to take advantage of cargo workspaces, improves compile times
## `0.2.1` - February 3rd, 2023
### Added
-- Added support for string interpolation syntax (update to Luau 0.561)
-- Added network server functionality using `net.serve`
+- Added support for string interpolation syntax (update to Luau 0.561)
+- Added network server functionality using `net.serve`
- Example usage:
+ Example usage:
- ```lua
- net.serve(8080, function(request)
- print(`Got a {request.method} request at {request.path}!`)
+ ```lua
+ net.serve(8080, function(request)
+ print(`Got a {request.method} request at {request.path}!`)
- local data = net.jsonDecode(request.body)
+ local data = net.jsonDecode(request.body)
- -- For simple text responses with a 200 status
- return "OK"
+ -- For simple text responses with a 200 status
+ return "OK"
- -- For anything else
- return {
- status = 203,
- headers = { ["Content-Type"] = "application/json" },
- body = net.jsonEncode({
- message = "echo",
- data = data,
- })
- }
- end)
- ```
+ -- For anything else
+ return {
+ status = 203,
+ headers = { ["Content-Type"] = "application/json" },
+ body = net.jsonEncode({
+ message = "echo",
+ data = data,
+ })
+ }
+ end)
+ ```
### Changed
-- Improved type definitions file for Selene, now including constants like `process.env` + tags such as `readonly` and `mustuse` wherever applicable
+- Improved type definitions file for Selene, now including constants like `process.env` + tags such as `readonly` and `mustuse` wherever applicable
### Fixed
-- Fixed type definitions file for Selene not including all API members and parameters
-- Fixed `process.exit` exiting at the first yield instead of exiting instantly as it should
+- Fixed type definitions file for Selene not including all API members and parameters
+- Fixed `process.exit` exiting at the first yield instead of exiting instantly as it should
## `0.2.0` - January 28th, 2023
### Added
-- Added full documentation for all global APIs provided by Lune! This includes over 200 lines of pure documentation about behavior & error cases for all of the current 35 constants & functions. Check the [README](/README.md) to find out how to enable documentation in your editor.
+- Added full documentation for all global APIs provided by Lune! This includes over 200 lines of pure documentation about behavior & error cases for all of the current 35 constants & functions. Check the [README](/README.md) to find out how to enable documentation in your editor.
-- Added a third argument `options` for `process.spawn`:
+- Added a third argument `options` for `process.spawn`:
- - `cwd` - The current working directory for the process
- - `env` - Extra environment variables to give to the process
- - `shell` - Whether to run in a shell or not - set to `true` to run using the default shell, or a string to run using a specific shell
- - `stdio` - How to treat output and error streams from the child process - set to `"inherit"` to pass output and error streams to the current process
+ - `cwd` - The current working directory for the process
+ - `env` - Extra environment variables to give to the process
+ - `shell` - Whether to run in a shell or not - set to `true` to run using the default shell, or a string to run using a specific shell
+ - `stdio` - How to treat output and error streams from the child process - set to `"inherit"` to pass output and error streams to the current process
-- Added `process.cwd`, the path to the current working directory in which the Lune script is running
+- Added `process.cwd`, the path to the current working directory in which the Lune script is running
## `0.1.3` - January 25th, 2023
### Added
-- Added a `--list` subcommand to list scripts found in the `lune` or `.lune` directory.
+- Added a `--list` subcommand to list scripts found in the `lune` or `.lune` directory.
## `0.1.2` - January 24th, 2023
### Added
-- Added automatic publishing of the Lune library to [crates.io](https://crates.io/crates/lune)
+- Added automatic publishing of the Lune library to [crates.io](https://crates.io/crates/lune)
### Fixed
-- Fixed scripts that terminate instantly sometimes hanging
+- Fixed scripts that terminate instantly sometimes hanging
## `0.1.1` - January 24th, 2023
### Fixed
-- Fixed errors containing `./` and / or `../` in the middle of file paths
-- Potential fix for spawned processes that yield erroring with "attempt to yield across metamethod/c-call boundary"
+- Fixed errors containing `./` and / or `../` in the middle of file paths
+- Potential fix for spawned processes that yield erroring with "attempt to yield across metamethod/c-call boundary"
## `0.1.0` - January 24th, 2023
### Added
-- `task` now supports passing arguments in `task.spawn` / `task.delay` / `task.defer`
-- `require` now uses paths relative to the file instead of being relative to the current directory, which is consistent with almost all other languages but not original Lua / Luau - this is a breaking change but will allow for proper packaging of third-party modules and more in the future.
- - **_NOTE:_** _If you still want to use the default Lua behavior instead of relative paths, set the environment variable `LUAU_PWD_REQUIRE` to `true`_
+- `task` now supports passing arguments in `task.spawn` / `task.delay` / `task.defer`
+- `require` now uses paths relative to the file instead of being relative to the current directory, which is consistent with almost all other languages but not original Lua / Luau - this is a breaking change but will allow for proper packaging of third-party modules and more in the future.
+ - **_NOTE:_** _If you still want to use the default Lua behavior instead of relative paths, set the environment variable `LUAU_PWD_REQUIRE` to `true`_
### Changed
-- Improved error message when an invalid file path is passed to `require`
-- Much improved error formatting and stack traces
+- Improved error message when an invalid file path is passed to `require`
+- Much improved error formatting and stack traces
### Fixed
-- Fixed downloading of type definitions making json files instead of the proper format
-- Process termination will now always make sure all lua state is cleaned up before exiting, in all cases
+- Fixed downloading of type definitions making json files instead of the proper format
+- Process termination will now always make sure all lua state is cleaned up before exiting, in all cases
## `0.0.6` - January 23rd, 2023
### Added
-- Initial implementation of [Roblox's task library](https://create.roblox.com/docs/reference/engine/libraries/task), with some caveats:
+- Initial implementation of [Roblox's task library](https://create.roblox.com/docs/reference/engine/libraries/task), with some caveats:
- - Minimum wait / delay time is currently set to 10ms, subject to change
- - It is not yet possible to pass arguments to tasks created using `task.spawn` / `task.delay` / `task.defer`
- - Timings for `task.defer` are flaky and deferred tasks are not (yet) guaranteed to run after spawned tasks
+ - Minimum wait / delay time is currently set to 10ms, subject to change
+ - It is not yet possible to pass arguments to tasks created using `task.spawn` / `task.delay` / `task.defer`
+ - Timings for `task.defer` are flaky and deferred tasks are not (yet) guaranteed to run after spawned tasks
- With all that said, everything else should be stable!
+ With all that said, everything else should be stable!
- - Mixing and matching the `coroutine` library with `task` works in all cases
- - `process.exit()` will stop all spawned / delayed / deferred threads and exit the process
- - Lune is guaranteed to keep running until there are no longer any waiting threads
+ - Mixing and matching the `coroutine` library with `task` works in all cases
+ - `process.exit()` will stop all spawned / delayed / deferred threads and exit the process
+ - Lune is guaranteed to keep running until there are no longer any waiting threads
- If any of the abovementioned things do not work as expected, it is a bug, please file an issue!
+ If any of the abovementioned things do not work as expected, it is a bug, please file an issue!
### Fixed
-- Potential fix for spawned processes that yield erroring with "attempt to yield across metamethod/c-call boundary"
+- Potential fix for spawned processes that yield erroring with "attempt to yield across metamethod/c-call boundary"
## `0.0.5` - January 22nd, 2023
### Added
-- Added full test suites for all Lune globals to ensure correct behavior
-- Added library version of Lune that can be used from other Rust projects
+- Added full test suites for all Lune globals to ensure correct behavior
+- Added library version of Lune that can be used from other Rust projects
### Changed
-- Large internal changes to allow for implementing the `task` library.
-- Improved general formatting of errors to make them more readable & glanceable
-- Improved output formatting of non-primitive types
-- Improved output formatting of empty tables
+- Large internal changes to allow for implementing the `task` library.
+- Improved general formatting of errors to make them more readable & glanceable
+- Improved output formatting of non-primitive types
+- Improved output formatting of empty tables
### Fixed
-- Fixed double stack trace for certain kinds of errors
+- Fixed double stack trace for certain kinds of errors
## `0.0.4` - January 21st, 2023
### Added
-- Added `process.args` for inspecting values given to Lune when running (read only)
-- Added `process.env` which is a plain table where you can get & set environment variables
+- Added `process.args` for inspecting values given to Lune when running (read only)
+- Added `process.env` which is a plain table where you can get & set environment variables
### Changed
-- Improved error formatting & added proper file name to stack traces
+- Improved error formatting & added proper file name to stack traces
### Removed
-- Removed `...` for process arguments, use `process.args` instead
-- Removed individual functions for getting & setting environment variables, use `process.env` instead
+- Removed `...` for process arguments, use `process.args` instead
+- Removed individual functions for getting & setting environment variables, use `process.env` instead
## `0.0.3` - January 20th, 2023
### Added
-- Added networking functions under `net`
+- Added networking functions under `net`
- Example usage:
+ Example usage:
- ```lua
- local apiResult = net.request({
- url = "https://jsonplaceholder.typicode.com/posts/1",
- method = "PATCH",
- headers = {
- ["Content-Type"] = "application/json",
- },
- body = net.jsonEncode({
- title = "foo",
- body = "bar",
- }),
- })
+ ```lua
+ local apiResult = net.request({
+ url = "https://jsonplaceholder.typicode.com/posts/1",
+ method = "PATCH",
+ headers = {
+ ["Content-Type"] = "application/json",
+ },
+ body = net.jsonEncode({
+ title = "foo",
+ body = "bar",
+ }),
+ })
- local apiResponse = net.jsonDecode(apiResult.body)
- assert(apiResponse.title == "foo", "Invalid json response")
- assert(apiResponse.body == "bar", "Invalid json response")
- ```
+ local apiResponse = net.jsonDecode(apiResult.body)
+ assert(apiResponse.title == "foo", "Invalid json response")
+ assert(apiResponse.body == "bar", "Invalid json response")
+ ```
-- Added console logging & coloring functions under `console`
+- Added console logging & coloring functions under `console`
- This piece of code:
+ This piece of code:
- ```lua
- local tab = { Integer = 1234, Hello = { "World" } }
- console.log(tab)
- ```
+ ```lua
+ local tab = { Integer = 1234, Hello = { "World" } }
+ console.log(tab)
+ ```
- Will print the following formatted text to the console, **_with syntax highlighting_**:
+ Will print the following formatted text to the console, **_with syntax highlighting_**:
- ```lua
- {
- Integer = 1234,
- Hello = {
- "World",
- }
- }
- ```
+ ```lua
+ {
+ Integer = 1234,
+ Hello = {
+ "World",
+ }
+ }
+ ```
- Additional utility functions exist with the same behavior but that also print out a colored
- tag together with any data given to them: `console.info`, `console.warn`, `console.error` -
- These print out prefix tags `[INFO]`, `[WARN]`, `[ERROR]` in blue, orange, and red, respectively.
+ Additional utility functions exist with the same behavior but that also print out a colored
+ tag together with any data given to them: `console.info`, `console.warn`, `console.error` -
+ These print out prefix tags `[INFO]`, `[WARN]`, `[ERROR]` in blue, orange, and red, respectively.
### Changed
-- The `json` api is now part of `net`
- - `json.encode` becomes `net.jsonEncode`
- - `json.decode` become `net.jsonDecode`
+- The `json` api is now part of `net`
+ - `json.encode` becomes `net.jsonEncode`
+ - `json.decode` become `net.jsonDecode`
### Fixed
-- Fixed JSON decode not working properly
+- Fixed JSON decode not working properly
## `0.0.2` - January 19th, 2023
### Added
-- Added support for command-line parameters to scripts
+- Added support for command-line parameters to scripts
- These can be accessed as a vararg in the root of a script:
+ These can be accessed as a vararg in the root of a script:
- ```lua
- local firstArg: string, secondArg: string = ...
- print(firstArg, secondArg)
- ```
+ ```lua
+ local firstArg: string, secondArg: string = ...
+ print(firstArg, secondArg)
+ ```
-- Added CLI parameters for downloading type definitions:
+- Added CLI parameters for downloading type definitions:
- - `lune --download-selene-types` to download Selene types to the current directory
- - `lune --download-luau-types` to download Luau types to the current directory
+ - `lune --download-selene-types` to download Selene types to the current directory
+ - `lune --download-luau-types` to download Luau types to the current directory
- These files will be downloaded as `lune.yml` and `luneTypes.d.luau`
- respectively and are also available in each release on GitHub.
+ These files will be downloaded as `lune.yml` and `luneTypes.d.luau`
+ respectively and are also available in each release on GitHub.
## `0.0.1` - January 18th, 2023
diff --git a/LICENSE.txt b/LICENSE.txt
index dbdb0fa..d0a1fa1 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -370,4 +370,4 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
- defined by the Mozilla Public License, v. 2.0.
\ No newline at end of file
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/docs/pages/Getting Started - 2 Writing Scripts.md b/docs/pages/Getting Started - 2 Writing Scripts.md
index 0cbe23d..8f72353 100644
--- a/docs/pages/Getting Started - 2 Writing Scripts.md
+++ b/docs/pages/Getting Started - 2 Writing Scripts.md
@@ -23,7 +23,7 @@ if #process.args > 0 then
error("Too many arguments!")
end
else
- print("Got no arguments âšī¸")
+ print("Got no arguments âšī¸")
end
@@ -75,14 +75,14 @@ end
Writing a module
- Modularizing and splitting up your code is Lune is very straight-forward,
- in contrast to other scripting languages and shells such as bash
+ Modularizing and splitting up your code is Lune is very straight-forward,
+ in contrast to other scripting languages and shells such as bash
]]
local module = {}
function module.sayHello()
- print("Hello, Lune! đ")
+ print("Hello, Lune! đ")
end
return module
@@ -94,7 +94,7 @@ return module
Using a function from another module / script
- Lune has path-relative imports, similar to other popular languages such as JavaScript
+ Lune has path-relative imports, similar to other popular languages such as JavaScript
]]
local module = require("../modules/module")
@@ -107,7 +107,7 @@ module.sayHello()
Spawning concurrent tasks
- These tasks will run at the same time as other Lua code which lets you do primitive multitasking
+ These tasks will run at the same time as other Lua code which lets you do primitive multitasking
]]
task.spawn(function()
@@ -173,7 +173,7 @@ end
Call out to another program / executable
- You can also get creative and combine this with example #6 to spawn several programs at the same time!
+ You can also get creative and combine this with example #6 to spawn several programs at the same time!
]]
print("Sending 4 pings to google đ")
@@ -190,7 +190,7 @@ local result = process.spawn("ping", {
Using the result of a spawned process, exiting the process
This looks scary with lots of weird symbols, but, it's just some Lua-style pattern matching
- to parse the lines of "min/avg/max/stddev = W/X/Y/Z ms" that the ping program outputs to us
+ to parse the lines of "min/avg/max/stddev = W/X/Y/Z ms" that the ping program outputs to us
]]
if result.ok then
@@ -302,12 +302,12 @@ VALID=true
COUNT=1
while [ $VALID ]
do
- echo $COUNT
- if [ $COUNT -eq 5 ];
- then
- break
- fi
- ((COUNT++))
+ echo $COUNT
+ if [ $COUNT -eq 5 ];
+ then
+ break
+ fi
+ ((COUNT++))
done
```
@@ -317,10 +317,10 @@ done
local valid = true
local count = 1
while valid do
- print(count)
- if count == 5 then
- break
- end
- count += 1
+ print(count)
+ if count == 5 then
+ break
+ end
+ count += 1
end
```
diff --git a/docs/pages/Getting Started - 4 Editor Setup.md b/docs/pages/Getting Started - 4 Editor Setup.md
index a5e2508..bebc313 100644
--- a/docs/pages/Getting Started - 4 Editor Setup.md
+++ b/docs/pages/Getting Started - 4 Editor Setup.md
@@ -10,24 +10,24 @@ These steps assume you have already installed Lune and that it is available to r
2. Run `lune --generate-docs-file` to generate a Luau LSP documentation file (`luneDocs.json`) in the current directory
3. Modify your VSCode settings, either by using the settings menu or in `settings.json`:
- ```json
- {
- "luau-lsp.require.mode": "relativeToFile", // Set the require mode to work with Lune
- "luau-lsp.types.definitionFiles": ["luneTypes.d.luau"], // Add type definitions for Lune globals
- "luau-lsp.types.documentationFiles": ["luneDocs.json"] // Add documentation for Lune globals
- }
- ```
+ ```json
+ {
+ "luau-lsp.require.mode": "relativeToFile", // Set the require mode to work with Lune
+ "luau-lsp.types.definitionFiles": ["luneTypes.d.luau"], // Add type definitions for Lune globals
+ "luau-lsp.types.documentationFiles": ["luneDocs.json"] // Add documentation for Lune globals
+ }
+ ```
## Selene
1. Run `lune --generate-selene-types` to generate a Selene type definitions file (`lune.yml`) in the current directory
2. Modify your Selene settings in `selene.toml`:
- ```yaml
- # Use this if Lune is the only thing you use Luau files with:
- std = "luau+lune"
- # OR use this if your project also contains Roblox-specific Luau code:
- std = "roblox+lune"
- # If you are also using the Luau type definitions file, it may cause issues, and can be safely ignored:
- exclude = ["luneTypes.d.luau"]
- ```
+ ```yaml
+ # Use this if Lune is the only thing you use Luau files with:
+ std = "luau+lune"
+ # OR use this if your project also contains Roblox-specific Luau code:
+ std = "roblox+lune"
+ # If you are also using the Luau type definitions file, it may cause issues, and can be safely ignored:
+ exclude = ["luneTypes.d.luau"]
+ ```
diff --git a/docs/pages/Home.md b/docs/pages/Home.md
index f6edf54..1f12225 100644
--- a/docs/pages/Home.md
+++ b/docs/pages/Home.md
@@ -6,20 +6,4 @@ Here you can find tutorials as well as a full API reference for all of Lune's bu
If you are just getting started, head over to the [installation](https://github.com/filiptibell/lune/wiki/Getting-Started---1-Installation) page!
-## Page Reference
-
-- Getting Started
-
- - [1. Installation](https://github.com/filiptibell/lune/wiki/Getting-Started---1-Installation)
- - [2. Writing Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---2-Writing-Scripts)
- - [3. Running Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---3-Running-Scripts)
- - [4. Editor Setup](https://github.com/filiptibell/lune/wiki/Getting-Started---4-Editor-Setup)
-
-- API Reference
-
- - [FS](https://github.com/filiptibell/lune/wiki/API-Reference---FS)
- - [Net](https://github.com/filiptibell/lune/wiki/API-Reference---Net)
- - [Process](https://github.com/filiptibell/lune/wiki/API-Reference---Process)
- - [Stdio](https://github.com/filiptibell/lune/wiki/API-Reference---Stdio)
- - [Task](https://github.com/filiptibell/lune/wiki/API-Reference---Task)
- - [Uncategorized](https://github.com/filiptibell/lune/wiki/API-Reference---Uncategorized)
+Anything else can be found in the navigation sidebar.
diff --git a/docs/pages/_Sidebar.md b/docs/pages/_Sidebar.md
index 63d27d8..05a4be7 100644
--- a/docs/pages/_Sidebar.md
+++ b/docs/pages/_Sidebar.md
@@ -2,17 +2,17 @@
# Home
-- [Getting Started](https://github.com/filiptibell/lune/wiki)
- - [1. Installation](https://github.com/filiptibell/lune/wiki/Getting-Started---1-Installation)
- - [2. Writing Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---2-Writing-Scripts)
- - [3. Running Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---3-Running-Scripts)
- - [4. Editor Setup](https://github.com/filiptibell/lune/wiki/Getting-Started---4-Editor-Setup)
+- [Getting Started](https://github.com/filiptibell/lune/wiki)
+ - [1. Installation](https://github.com/filiptibell/lune/wiki/Getting-Started---1-Installation)
+ - [2. Writing Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---2-Writing-Scripts)
+ - [3. Running Scripts](https://github.com/filiptibell/lune/wiki/Getting-Started---3-Running-Scripts)
+ - [4. Editor Setup](https://github.com/filiptibell/lune/wiki/Getting-Started---4-Editor-Setup)
# API Reference
-- [FS](https://github.com/filiptibell/lune/wiki/API-Reference---FS)
-- [Net](https://github.com/filiptibell/lune/wiki/API-Reference---Net)
-- [Process](https://github.com/filiptibell/lune/wiki/API-Reference---Process)
-- [Stdio](https://github.com/filiptibell/lune/wiki/API-Reference---Stdio)
-- [Task](https://github.com/filiptibell/lune/wiki/API-Reference---Task)
-- [Uncategorized](https://github.com/filiptibell/lune/wiki/API-Reference---Uncategorized)
+- [FS](https://github.com/filiptibell/lune/wiki/API-Reference---FS)
+- [Net](https://github.com/filiptibell/lune/wiki/API-Reference---Net)
+- [Process](https://github.com/filiptibell/lune/wiki/API-Reference---Process)
+- [Stdio](https://github.com/filiptibell/lune/wiki/API-Reference---Stdio)
+- [Task](https://github.com/filiptibell/lune/wiki/API-Reference---Task)
+- [Uncategorized](https://github.com/filiptibell/lune/wiki/API-Reference---Uncategorized)