add example/form.lua
All checks were successful
NeoVim tests / code-quality (push) Successful in 1m24s

This commit is contained in:
Jonathan Apodaca 2025-06-14 00:19:11 -06:00
parent ad2e579d1d
commit 1b2cb3f45f

34
examples/form.lua Normal file
View File

@ -0,0 +1,34 @@
local h = require('u.renderer').h
local Renderer = require('u.renderer').Renderer
local tracker = require 'u.tracker'
-- Create a new, temporary, buffer to the side:
vim.cmd.vnew()
vim.bo.buftype = 'nofile'
vim.bo.bufhidden = 'wipe'
vim.bo.buflisted = false
local renderer = Renderer.new()
-- Create two signals:
local s_name = tracker.create_signal '[(name here)]'
local s_age = tracker.create_signal '[(age here)]'
-- Utility to trim brackets from strings:
local function trimb(s) return (s:gsub('^%[(.*)%]$', '%1')) end
-- Render effect that depends on the signals:
tracker.create_effect(function()
local name = s_name:get()
local age = s_age:get()
renderer:render {
h.Type({}, '# Form Example'),
'\n\n',
{ 'Name: ', h.Structure({ signal = s_name }, name) },
'\n',
{ 'Age: ', h.Structure({ signal = s_age }, age) },
'\n\n',
{ 'Hello, "', trimb(name), '", you are "', trimb(age), '" years old.' },
}
end)