refactor(api)!: declare callbacks as classes an app composes
The runtime has always called fields on the table main.lua returns, but @lua-global declared them as loose functions, so the stubs type-checked something that does not exist and read as "define a global". Callbacks are now @lua-app blocks that generate a class: App for the core contract, TouchHandlers and ButtonHandlers beside the namespaces they belong to. An app composes what it implements: ---@class PaintApp : App, TouchHandlers Names follow the rest of the surface: onTouchDown rather than on_touch_down, with the field names the runtime looks up renamed to match. @lua-field carries the plain fields (home, data) that were prose in a preamble before.
This commit is contained in:
@@ -200,11 +200,11 @@ int main() {
|
||||
"route .. ':' .. arg end,\n"
|
||||
" draw = function(delta) if delta < 0 then error('kaboom') end\n"
|
||||
" events[#events + 1] = 'draw:' .. delta end,\n"
|
||||
" on_touch_down = note('down'),\n"
|
||||
" on_touch_up = note('up'),\n"
|
||||
" on_touch = note('tap'),\n"
|
||||
" on_button_up = note('bup'),\n"
|
||||
" on_button = note('btap'),\n"
|
||||
" onTouchDown = note('down'),\n"
|
||||
" onTouchUp = note('up'),\n"
|
||||
" onTouch = note('tap'),\n"
|
||||
" onButtonUp = note('bup'),\n"
|
||||
" onButton = note('btap'),\n"
|
||||
"}\n";
|
||||
esp32lua::Runtime hosted(chrome.providers());
|
||||
assert(hosted.startApp("Reader", "book.epub"));
|
||||
@@ -212,7 +212,7 @@ int main() {
|
||||
hosted.callDraw(33);
|
||||
hosted.callTouch(esp32lua::TouchPhase::Down, 5, 6);
|
||||
hosted.callTouch(esp32lua::TouchPhase::Move, 5,
|
||||
7); // main.lua defines no on_touch_move
|
||||
7); // main.lua defines no onTouchMove
|
||||
hosted.callTouch(esp32lua::TouchPhase::Up, 5, 8);
|
||||
hosted.callButton("confirm", false);
|
||||
run(hosted.state(),
|
||||
|
||||
Reference in New Issue
Block a user