2
2
mirror of https://github.com/Hilbis/Hilbish synced 2025-05-06 04:13:24 +00:00

148 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html class="bg-stone-50 dark:bg-neutral-950 text-black dark:text-white"><head><meta content="width=device-width, initial-scale=1.0" name="viewport"><link href="/tailwind.css" rel="stylesheet"><title>Hilbish</title><meta content="#ff89dd" name="theme-color"><meta content="./hilbish-flower.png" property="og:image"><meta content="Hilbish" property="og:title"><meta content="Hilbish" property="og:site_name"><meta content="website" property="og:type"><meta content="Something Unique. Hilbish is the new interactive shell for Lua fans. Extensible, scriptable, configurable: All in Lua." property="og:description"><meta content="Something Unique. Hilbish is the new interactive shell for Lua fans. Extensible, scriptable, configurable: All in Lua." name="description"><meta content="Lua,Shell,Hilbish,Linux,zsh,bash" name="keywords"><meta content="https://rosettea.github.io/Hilbish/versions/new-website" property="og:url"></head><body><nav class="flex sticky top-0 w-full z-50 border-b border-b-zinc-300 backdrop-blur-md h-12"><div class="flex my-auto px-2"><div><a class="flex items-center gap-1" href="/"><img class="h-6" src="/hilbish-flower.png"><span class="self-center text-2xl">Hilbish</span></a></div></div></nav><div class="flex flex-col"><div class="block sm:hidden h-10 sticky top-12 flex py-2 px-4 border-b border-b-zinc-300 w-full gap-2 backdrop-blur-sm bg-zinc-300/50 z-50"><label class="cursor-pointer" for="sidebar-toggle"><tag><svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" class="fill-black"><path d="M120-240v-80h240v80H120Zm0-200v-80h480v80H120Zm0-200v-80h720v80H120Z"/></svg></tag></label><span>Module bait</span></div><div class="grid sm:flex"><input class="peer hidden" id="sidebar-toggle" type="checkbox"><div class="border-r border-r-zinc-300 col-start-1 row-start-1 sticky top-22 sm:top-12 h-full sm:h-svh bg-neutral-200 basis-3/5 transition-transform duration-300 -translate-x-full sm:translate-x-0 peer-checked:translate-x-0 z-30"><div class="p-4 -mb-4 overflow-y-auto h-full"><h2 class="text-xl font-semibold mb-4">Sidebar</h2><ul><li class="mb-2">Lunacolors</li><li class="mb-2">Introduction</li><li class="mb-2">Completions</li><li class="mb-2">Frequently Asked Questions</li><li class="mb-2">Getting Started</li><li class="mb-2">Options</li><li class="mb-2">Features</li><li class="mb-2">Runner Mode</li><li class="mb-2">Notification</li><li class="mb-2">Signals</li><li class="mb-2">Signal</li><li class="mb-2">Command</li><li class="mb-2">Hilbish</li><li class="mb-2">Vim Mode</li><li class="mb-2">Actions</li><li class="mb-2">Module bait</li><li class="mb-2">Module terminal</li><li class="mb-2">API</li><li class="mb-2">Module fs</li><li class="mb-2">Module commander</li><li class="mb-2">Module snail</li><li class="mb-2">Module hilbish.aliases</li><li class="mb-2">Module hilbish.abbr</li><li class="mb-2">Module hilbish</li><li class="mb-2">Module hilbish.userDir</li><li class="mb-2">Module hilbish.messages</li><li class="mb-2">Module hilbish.runner</li><li class="mb-2">Module hilbish.history</li><li class="mb-2">Module hilbish.jobs</li><li class="mb-2">Module hilbish.editor</li><li class="mb-2">Module hilbish.module</li><li class="mb-2">Module hilbish.os</li><li class="mb-2">Module hilbish.completion</li><li class="mb-2">Module hilbish.timers</li><li class="mb-2">Module dirs</li><li class="mb-2">Nature</li><li class="mb-2">Module doc</li></ul></div></div><main class="col-start-1 row-start-1 transition-all duration-300 peer-checked:filter peer-checked:blur-sm peer-checked:bg-black/30 px-4 pt-2"><h1>Module bait</h1><Tag xmlns="namespace"><h2>Introduction</h2>
<p>Bait is the event emitter for Hilbish. Much like Node.js and
its <code>events</code> system, many actions in Hilbish emit events.
Unlike Node.js, Hilbish events are global. So make sure to
pick a unique name!</p>
<p>Usage of the Bait module consists of userstanding
event-driven architecture, but its pretty simple:
If you want to act on a certain event, you can <code>catch</code> it.
You can act on events via callback functions.</p>
<p>Examples of this are in the Hilbish default config!
Consider this part of it:</p>
<pre><code><span><span>bait</span><span>.</span><span>catch</span><span>(</span><span>'command.exit'</span><span>,</span> <span>function</span><span>(</span><span>code</span><span>)</span>
</span><span> <span>running</span> <span>=</span> <span>false</span>
</span><span> <span>doPrompt</span><span>(</span><span>code</span> <span>~=</span> <span>0</span><span>)</span>
</span><span> <span>doNotifyPrompt</span><span>(</span><span>)</span>
</span><span><span>end</span><span>)</span>
</span></code></pre>
<p>What this does is, whenever the <code>command.exit</code> event is thrown,
this function will set the user prompt.</p>
<h2>Functions</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#catch" rel="noopener noreferrer">catch(name, cb)</a></td>
<td>Catches an event. This function can be used to act on events.</td>
</tr>
<tr>
<td><a href="#catchOnce" rel="noopener noreferrer">catchOnce(name, cb)</a></td>
<td>Catches an event, but only once. This will remove the hook immediately after it runs for the first time.</td>
</tr>
<tr>
<td><a href="#hooks" rel="noopener noreferrer">hooks(name) -&gt; table</a></td>
<td>Returns a table of functions that are hooked on an event with the corresponding <code>name</code>.</td>
</tr>
<tr>
<td><a href="#release" rel="noopener noreferrer">release(name, catcher)</a></td>
<td>Removes the <code>catcher</code> for the event with <code>name</code>.</td>
</tr>
<tr>
<td><a href="#throw" rel="noopener noreferrer">throw(name, …args)</a></td>
<td>Throws a hook with <code>name</code> with the provided <code>args</code>.</td>
</tr>
</tbody>
</table>
<hr>
<div>
<h4>
bait.catch(name, cb)
<a href="#catch" rel="noopener noreferrer">
<i></i>
</a>
</h4>
<p>Catches an event. This function can be used to act on events.</p>
<h4>Parameters</h4>
<p><code>string</code> <strong><code>name</code></strong><br>
The name of the hook.</p>
<p><code>function</code> <strong><code>cb</code></strong><br>
The function that will be called when the hook is thrown.</p>
<h4>Example</h4>
<pre><code><span><span>bait</span><span>.</span><span>catch</span><span>(</span><span>'hilbish.exit'</span><span>,</span> <span>function</span><span>(</span><span>)</span>
</span><span> <span>print</span> <span>'Goodbye Hilbish!'</span>
</span><span><span>end</span><span>)</span>
</span></code></pre>
</div>
<hr>
<div>
<h4>
bait.catchOnce(name, cb)
<a href="#catchOnce" rel="noopener noreferrer">
<i></i>
</a>
</h4>
<p>Catches an event, but only once. This will remove the hook immediately after it runs for the first time.</p>
<h4>Parameters</h4>
<p><code>string</code> <strong><code>name</code></strong><br>
The name of the event</p>
<p><code>function</code> <strong><code>cb</code></strong><br>
The function that will be called when the event is thrown.</p>
</div>
<hr>
<div>
<h4>
bait.hooks(name) -&gt; table
<a href="#hooks" rel="noopener noreferrer">
<i></i>
</a>
</h4>
<p>Returns a table of functions that are hooked on an event with the corresponding <code>name</code>.</p>
<h4>Parameters</h4>
<p><code>string</code> <strong><code>name</code></strong><br>
The name of the hook</p>
</div>
<hr>
<div>
<h4>
bait.release(name, catcher)
<a href="#release" rel="noopener noreferrer">
<i></i>
</a>
</h4>
<p>Removes the <code>catcher</code> for the event with <code>name</code>.<br>
For this to work, <code>catcher</code> has to be the same function used to catch<br>
an event, like one saved to a variable.</p>
<h4>Parameters</h4>
<p><code>string</code> <strong><code>name</code></strong><br>
Name of the event the hook is on</p>
<p><code>function</code> <strong><code>catcher</code></strong><br>
Hook function to remove</p>
<h4>Example</h4>
<pre><code><span><span>local</span> <span>hookCallback</span> <span>=</span> <span>function</span><span>(</span><span>)</span> <span>print</span> <span>'hi'</span> <span>end</span>
</span><span>
</span><span><span>bait</span><span>.</span><span>catch</span><span>(</span><span>'event'</span><span>,</span> <span>hookCallback</span><span>)</span>
</span><span>
</span><span><span>-- a little while later....</span>
</span><span><span>bait</span><span>.</span><span>release</span><span>(</span><span>'event'</span><span>,</span> <span>hookCallback</span><span>)</span>
</span><span><span>-- and now hookCallback will no longer be ran for the event.</span>
</span></code></pre>
</div>
<hr>
<div>
<h4>
bait.throw(name, ...args)
<a href="#throw" rel="noopener noreferrer">
<i></i>
</a>
</h4>
<p>Throws a hook with <code>name</code> with the provided <code>args</code>.</p>
<h4>Parameters</h4>
<p><code>string</code> <strong><code>name</code></strong><br>
The name of the hook.</p>
<p><code>any</code> <strong><code>args</code></strong> (This type is variadic. You can pass an infinite amount of parameters with this type.)<br>
The arguments to pass to the hook.</p>
<h4>Example</h4>
<pre><code><span><span>bait</span><span>.</span><span>throw</span><span>(</span><span>'greeting'</span><span>,</span> <span>'world'</span><span>)</span>
</span><span>
</span><span><span>-- This can then be listened to via</span>
</span><span><span>bait</span><span>.</span><span>catch</span><span>(</span><span>'gretting'</span><span>,</span> <span>function</span><span>(</span><span>greetTo</span><span>)</span>
</span><span> <span>print</span><span>(</span><span>'Hello '</span> <span>..</span> <span>greetTo</span><span>)</span>
</span><span><span>end</span><span>)</span>
</span></code></pre>
</div></Tag></main></div></div><footer class="py-4 px-6 flex flex-row justify-around border-t border-t-zinc-300"><div class="flex flex-col"><a class="flex items-center gap-1" href="/"><img class="h-24" src="/hilbish-flower.png"><span class="self-center text-6xl">Hilbish</span></a><span class="text-xl">The Moon-powered shell!</span><span class="text-light text-neutral-500">MIT License, copyright sammyette 2025</span></div><div class="flex flex-col"><a href="https://github.com/Rosettea/Hilbish"><span class="text-pink-300 text-light">GitHub</span></a></div></footer></body></html>