Commit graph

239 commits

Author SHA1 Message Date
VorTechnix
9efaecc13a
first usage of handle_fn_result 2024-10-17 09:02:49 -07:00
VorTechnix
0076010f35
WE compatibility for Notify 2024-10-17 08:50:57 -07:00
VorTechnix
ae5d18248f
sorted init and added handle_fn_result 2024-10-17 08:49:14 -07:00
VorTechnix
0ffdb47b54
more doc refixes 2024-10-16 19:57:55 -07:00
VorTechnix
63bdbdfac9
switched to unpack method 2024-10-16 19:53:10 -07:00
VorTechnix
c86319d94e
wea_c.notify main changeover 2024-10-16 19:22:34 -07:00
VorTechnix
644510a9ca
documentation redo... again 2024-10-16 19:22:09 -07:00
VorTechnix
440dae68a1
Notify.suppress_for_function now actually returns results! 2024-10-16 19:13:22 -07:00
5331b32159
register_command: add since 1.15 for async support 2024-10-17 03:11:46 +01:00
74377c7285
safe_function: update docs, add todo ref implementing wea_core.safe_after() 2024-10-17 02:40:07 +01:00
6ef17fed27
core/notify: fix crash in suppression system
`local globalstate` is initialised to have the field `suppressed_players`, but the non-existent field `suppress` is requested, resulting in operations on nil rather than the expected table. This causes the aforementioned crash.

This commit fixes this issue.
2024-10-17 02:25:31 +01:00
52c30a8dd1
safe_function: fix docblock docs 2024-10-17 02:01:04 +01:00
1ae48f3a52
run_command: implement support for async functions.
Also update //for to make use of this new functionality.

//subdivide is still on the todo list.

The new functionality works by adding the new property `async = false` to command definition tables registered via wea_core.register_command()`. When `true`, if and only if the command's MAIN FUNC ONLY returns no values at all then it will consider an async operation to be in progress.

This delays `run_command` from emitting the `post-execute` event on `wea_core`.

Additionally, all async commands have a callback function injected as the first argument to their main `func` (ref main cmd definition table). This callback function -- if no arguments are returned by the main `func` -- must be called once the async operation is complete with same args you would normally return from `func` -- that is `success, result_message`. These will then be handled as normal and sent to the player as appropriate, as well as finally emitting the `post-execute` event.

BUG: There is a potential issue in this implementation, in that if i.e. `minetest.after()` is used to delay async execution then this will break out of the `xpcall()` protection in place to prevent crashes. To this end, if you implement an async function you need to be very careful, and do a manual `wea_core.safe_function()` call yourself!
2024-10-17 01:54:32 +01:00
a06136812f
split_shell: use @example 2024-10-17 00:34:42 +01:00
36a6bf6b49
weac.notify: fix __call
When you do weac.notify(player_name, "info", "msg"), Lua auto-inserts a `self` table which refers to the main `Notify` table there.

This is because `local function call()` is registered via `setmetatable(Notify, ...)`, which auto-inserts `self` as the 1st argument.

To this end, this command adds a dummy 1st argument `_self` to capture this extra table to avoid all args being shifted by 1.
2024-10-17 00:21:42 +01:00
a45c119945
run_command: update result_message handling from execution to be more exhaustive 2024-10-16 23:49:40 +01:00
VorTechnix
ecafb69486
switched run_command to wea core notify 2024-10-16 15:15:47 -07:00
VorTechnix
41577de416
doc updates 2024-10-16 12:04:20 -07:00
VorTechnix
66dcd6bbd7
added suppression 2024-10-15 17:31:40 -07:00
fbb3d5096c
tokenise_commands: use @example 2024-10-16 01:00:01 +01:00
c84fa5f152
Notify, Notify.validate: correct docblock comments so they work with moondoc
moondoc is the system we use for auto-generating Lua API docs

Ref https://github.com/sbrl/moondoc
2024-10-15 22:36:47 +01:00
57d09a766b
Merge branch 'feature/pcall-protection' into dev 2024-10-15 20:15:17 +01:00
VorTechnix
e0f6d9d9ce
Update notify.lua 2024-10-14 19:13:47 -07:00
VorTechnix
a9307d3725
Update validate.lua 2024-10-14 19:13:20 -07:00
VorTechnix
a0f3fb5a3d
folderized notify 2024-10-14 15:41:43 -07:00
0ca3842b40
fix busted error 2024-10-14 20:59:42 +01:00
ea1c17a6e3
safe_function: only log error when there's actually an error 2024-10-14 20:48:55 +01:00
b6c41395f6
core: tidy up new safe_function implementation; bugfix 2024-10-14 20:46:26 +01:00
00b1aed1ff
abstract new xpcall wrapper into new API function safe_function 2024-10-14 19:25:53 +01:00
c01eb23488
newline 2024-10-14 18:53:32 +01:00
938a617dc3
run_command: add prototype wrapper around command parsing. 2024-10-14 18:51:33 +01:00
VorTechnix
5381c31abb
Update notify.lua 2024-10-13 21:18:57 -07:00
VorTechnix
ef1189e6db
Update notify.lua 2024-10-13 14:23:05 -07:00
VorTechnix
5e54d112ce
added wea_c.notify 2024-10-13 13:52:27 -07:00
cd22c710b2
start working on implementing some kind of system to catch error messages
....it works, but:
- We can't capture stack traces like this
- It's messy
- We need to implement an escape/encodeURIComponent function ourselves from scratch 'cause the one I ripped from Stack Overflow sucks
2024-10-12 01:04:27 +01:00
86fd6a560d
split_shell: document properly
it should appear in the Lua API docs now.

Cody AI was actually v helpful with this, and it helped that I already had tests for it o/
2024-10-11 03:19:31 +01:00
270cbd5aae
split_shell: remove unused argument 2024-10-11 03:12:14 +01:00
VorTechnix
269a73be48
Fixed CLRF Issues (I hope) 2024-10-07 16:11:35 -07:00
7b43e4b201
weac.parse.map: add nil check via assertion 2024-10-07 19:07:49 +01:00
717a651bd8
typos in comments 2024-10-02 01:20:08 +01:00
d74427e017
Fix some luacheck errors
the others are because rotate.lua isn't finished
Unfortunately I don't have the time to fix it now, because it will require a lot of time
2024-10-02 01:17:41 +01:00
f3f0e8966d
run_command: prepend the name of the command in case of error. 2024-10-01 21:27:30 +01:00
VorTechnix
b319baae16
Merge branch 'dev' into selection-tools-refactor 2024-10-01 11:44:01 -07:00
VorTechnix
a794429961
Show default values in param
Co-authored-by: Starbeamrainbowlabs <sbrl@starbeamrainbowlabs.com>
2024-10-01 06:50:48 -07:00
5fd0c3dad3
core/pos: implement set_multi as a convenient alternative to multiple set() calls
/cc @VorTechnix & https://github.com/sbrl/Minetest-WorldEditAdditions/pull/112/files?diff=unified&w=1
2024-09-30 22:01:22 +01:00
VorTechnix
61bfab240a
axes parser re-refactor tests passed 2024-09-18 21:25:42 -07:00
d29b037675
orientation: refactor a bit, docs 2024-09-17 23:23:09 +01:00
d49f6d2131
Lift orientation functions from screwdriver2 mod
Ref @12Me21 https://github.com/12Me21/screwdriver2/blob/master/init.lua#L75-L79
Ref @khonkhortisan https://forum.minetest.net/viewtopic.php?p=73195&sid=1d2d2e4e76ce2ef9c84646481a4b84bc#p73195

....if either of you have an issue with this, please get in touch! The licence seems to allow this lifting and relicencing like this (given it's WTFPL as of the time of typing), but correct me if I'm wrong.

For reference, WorldEditAdditions is currently licenced under the Mozilla Public License Version 2.0.
2024-09-17 23:18:37 +01:00
0915a137f8
weac.table: dofile() table_find 2024-09-17 23:13:00 +01:00
6290c61e2f
typo 2024-09-17 22:56:02 +01:00