mirror of
				https://github.com/sammy-ette/Hilbish
				synced 2025-08-10 02:52:03 +00:00 
			
		
		
		
	docs: add better introduction for bait module
also highlights codeblocks better
This commit is contained in:
		
							parent
							
								
									7c1984135b
								
							
						
					
					
						commit
						81b7e20cbf
					
				@ -437,7 +437,7 @@ func main() {
 | 
			
		||||
			f, _ := os.Create(docPath)
 | 
			
		||||
			f.WriteString(fmt.Sprintf(header, modOrIface, modname, modu.ShortDescription))
 | 
			
		||||
			typeTag, _ := regexp.Compile(`@\w+`)
 | 
			
		||||
			modDescription := typeTag.ReplaceAllStringFunc(strings.Replace(modu.Description, "<", `\<`, -1), func(typ string) string {
 | 
			
		||||
			modDescription := typeTag.ReplaceAllStringFunc(strings.Replace(strings.Replace(modu.Description, "<", `\<`, -1), "{{\\<", "{{<", -1), func(typ string) string {
 | 
			
		||||
				typName := typ[1:]
 | 
			
		||||
				typLookup := typeTable[strings.ToLower(typName)]
 | 
			
		||||
				ifaces := typLookup[0] + "." + typLookup[1] + "/"
 | 
			
		||||
 | 
			
		||||
@ -8,17 +8,37 @@ menu:
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Introduction
 | 
			
		||||
Bait is the event emitter for Hilbish. Why name it bait? Why not.
 | 
			
		||||
It throws hooks that you can catch. This is what you will use if
 | 
			
		||||
you want to listen in on hooks to know when certain things have
 | 
			
		||||
happened, like when you've changed directory, a command has failed,
 | 
			
		||||
etc. To find all available hooks thrown by Hilbish, see doc hooks.
 | 
			
		||||
 | 
			
		||||
Bait is the event emitter for Hilbish. Much like Node.js and
 | 
			
		||||
its `events` system, many actions in Hilbish emit events.
 | 
			
		||||
Unlike Node.js, Hilbish events are global. So make sure to
 | 
			
		||||
pick a unique name!
 | 
			
		||||
 | 
			
		||||
Usage of the Bait module consists of userstanding
 | 
			
		||||
event-driven architecture, but it's pretty simple:
 | 
			
		||||
If you want to act on a certain event, you can `catch` it.
 | 
			
		||||
You can act on events via callback functions.
 | 
			
		||||
 | 
			
		||||
Examples of this are in the Hilbish default config!
 | 
			
		||||
Consider this part of it:
 | 
			
		||||
```
 | 
			
		||||
bait.catch('command.exit', function(code)
 | 
			
		||||
	running = false
 | 
			
		||||
	doPrompt(code ~= 0)
 | 
			
		||||
	doNotifyPrompt()
 | 
			
		||||
end)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
What this does is, whenever the `command.exit` event is thrown,
 | 
			
		||||
this function will set the user prompt.
 | 
			
		||||
 | 
			
		||||
## Functions
 | 
			
		||||
### bait.catch(name, cb)
 | 
			
		||||
Catches a hook with `name`. Runs the `cb` when it is thrown
 | 
			
		||||
#### Parameters
 | 
			
		||||
This function has no parameters.  
 | 
			
		||||
`string` **`name`**  
 | 
			
		||||
ummm
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### bait.catchOnce(name, cb)
 | 
			
		||||
Same as catch, but only runs the `cb` once and then removes the hook
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,28 @@
 | 
			
		||||
// the event emitter
 | 
			
		||||
// Bait is the event emitter for Hilbish. Why name it bait? Why not.
 | 
			
		||||
// It throws hooks that you can catch. This is what you will use if
 | 
			
		||||
// you want to listen in on hooks to know when certain things have
 | 
			
		||||
// happened, like when you've changed directory, a command has failed,
 | 
			
		||||
// etc. To find all available hooks thrown by Hilbish, see doc hooks.
 | 
			
		||||
/*
 | 
			
		||||
Bait is the event emitter for Hilbish. Much like Node.js and
 | 
			
		||||
its `events` system, many actions in Hilbish emit events.
 | 
			
		||||
Unlike Node.js, Hilbish events are global. So make sure to
 | 
			
		||||
pick a unique name!
 | 
			
		||||
 | 
			
		||||
Usage of the Bait module consists of userstanding
 | 
			
		||||
event-driven architecture, but it's pretty simple:
 | 
			
		||||
If you want to act on a certain event, you can `catch` it.
 | 
			
		||||
You can act on events via callback functions.
 | 
			
		||||
 | 
			
		||||
Examples of this are in the Hilbish default config!
 | 
			
		||||
Consider this part of it:
 | 
			
		||||
```
 | 
			
		||||
bait.catch('command.exit', function(code)
 | 
			
		||||
	running = false
 | 
			
		||||
	doPrompt(code ~= 0)
 | 
			
		||||
	doNotifyPrompt()
 | 
			
		||||
end)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
What this does is, whenever the `command.exit` event is thrown,
 | 
			
		||||
this function will set the user prompt.
 | 
			
		||||
*/
 | 
			
		||||
package bait
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
@ -253,8 +272,8 @@ func (b *Bait) bthrow(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) {
 | 
			
		||||
 | 
			
		||||
// catch(name, cb)
 | 
			
		||||
// Catches a hook with `name`. Runs the `cb` when it is thrown
 | 
			
		||||
// --- @param name string
 | 
			
		||||
// --- @param cb function
 | 
			
		||||
// #param name string ummm
 | 
			
		||||
// #param cb function ?
 | 
			
		||||
func (b *Bait) bcatch(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) {
 | 
			
		||||
	name, catcher, err := util.HandleStrCallback(t, c)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,9 @@ enableGitInfo = true
 | 
			
		||||
[markup.goldmark.renderer]
 | 
			
		||||
unsafe = true
 | 
			
		||||
 | 
			
		||||
[markup.highlight]
 | 
			
		||||
style = 'pastie'
 | 
			
		||||
 | 
			
		||||
[author]
 | 
			
		||||
	[author.sammyette]
 | 
			
		||||
		name = 'sammyette'
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										85
									
								
								website/themes/hsh/assets/css/syntax.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								website/themes/hsh/assets/css/syntax.css
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,85 @@
 | 
			
		||||
/* Background */ .bg { background-color: #ffffff; }
 | 
			
		||||
/* PreWrapper */ .chroma { background-color: #ffffff; }
 | 
			
		||||
/* Other */ .chroma .x {  }
 | 
			
		||||
/* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 }
 | 
			
		||||
/* CodeLine */ .chroma .cl {  }
 | 
			
		||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
 | 
			
		||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
 | 
			
		||||
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
 | 
			
		||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
 | 
			
		||||
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
 | 
			
		||||
/* Line */ .chroma .line { display: flex; }
 | 
			
		||||
/* Keyword */ .chroma .k { color: #008800; font-weight: bold }
 | 
			
		||||
/* KeywordConstant */ .chroma .kc { color: #008800; font-weight: bold }
 | 
			
		||||
/* KeywordDeclaration */ .chroma .kd { color: #008800; font-weight: bold }
 | 
			
		||||
/* KeywordNamespace */ .chroma .kn { color: #008800; font-weight: bold }
 | 
			
		||||
/* KeywordPseudo */ .chroma .kp { color: #008800 }
 | 
			
		||||
/* KeywordReserved */ .chroma .kr { color: #008800; font-weight: bold }
 | 
			
		||||
/* KeywordType */ .chroma .kt { color: #888888; font-weight: bold }
 | 
			
		||||
/* Name */ .chroma .n {  }
 | 
			
		||||
/* NameAttribute */ .chroma .na { color: #336699 }
 | 
			
		||||
/* NameBuiltin */ .chroma .nb { color: #003388 }
 | 
			
		||||
/* NameBuiltinPseudo */ .chroma .bp {  }
 | 
			
		||||
/* NameClass */ .chroma .nc { color: #bb0066; font-weight: bold }
 | 
			
		||||
/* NameConstant */ .chroma .no { color: #003366; font-weight: bold }
 | 
			
		||||
/* NameDecorator */ .chroma .nd { color: #555555 }
 | 
			
		||||
/* NameEntity */ .chroma .ni {  }
 | 
			
		||||
/* NameException */ .chroma .ne { color: #bb0066; font-weight: bold }
 | 
			
		||||
/* NameFunction */ .chroma .nf { color: #0066bb; font-weight: bold }
 | 
			
		||||
/* NameFunctionMagic */ .chroma .fm {  }
 | 
			
		||||
/* NameLabel */ .chroma .nl { color: #336699; font-style: italic }
 | 
			
		||||
/* NameNamespace */ .chroma .nn { color: #bb0066; font-weight: bold }
 | 
			
		||||
/* NameOther */ .chroma .nx {  }
 | 
			
		||||
/* NameProperty */ .chroma .py { color: #336699; font-weight: bold }
 | 
			
		||||
/* NameTag */ .chroma .nt { color: #bb0066; font-weight: bold }
 | 
			
		||||
/* NameVariable */ .chroma .nv { color: #336699 }
 | 
			
		||||
/* NameVariableClass */ .chroma .vc { color: #336699 }
 | 
			
		||||
/* NameVariableGlobal */ .chroma .vg { color: #dd7700 }
 | 
			
		||||
/* NameVariableInstance */ .chroma .vi { color: #3333bb }
 | 
			
		||||
/* NameVariableMagic */ .chroma .vm {  }
 | 
			
		||||
/* Literal */ .chroma .l {  }
 | 
			
		||||
/* LiteralDate */ .chroma .ld {  }
 | 
			
		||||
/* LiteralString */ .chroma .s { color: #dd2200; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringAffix */ .chroma .sa { color: #dd2200; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringBacktick */ .chroma .sb { color: #dd2200; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringChar */ .chroma .sc { color: #dd2200; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringDelimiter */ .chroma .dl { color: #dd2200; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringDoc */ .chroma .sd { color: #dd2200; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringDouble */ .chroma .s2 { color: #dd2200; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringEscape */ .chroma .se { color: #0044dd; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringHeredoc */ .chroma .sh { color: #dd2200; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringInterpol */ .chroma .si { color: #3333bb; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringOther */ .chroma .sx { color: #22bb22; background-color: #f0fff0 }
 | 
			
		||||
/* LiteralStringRegex */ .chroma .sr { color: #008800; background-color: #fff0ff }
 | 
			
		||||
/* LiteralStringSingle */ .chroma .s1 { color: #dd2200; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralStringSymbol */ .chroma .ss { color: #aa6600; background-color: #fff0f0 }
 | 
			
		||||
/* LiteralNumber */ .chroma .m { color: #0000dd; font-weight: bold }
 | 
			
		||||
/* LiteralNumberBin */ .chroma .mb { color: #0000dd; font-weight: bold }
 | 
			
		||||
/* LiteralNumberFloat */ .chroma .mf { color: #0000dd; font-weight: bold }
 | 
			
		||||
/* LiteralNumberHex */ .chroma .mh { color: #0000dd; font-weight: bold }
 | 
			
		||||
/* LiteralNumberInteger */ .chroma .mi { color: #0000dd; font-weight: bold }
 | 
			
		||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #0000dd; font-weight: bold }
 | 
			
		||||
/* LiteralNumberOct */ .chroma .mo { color: #0000dd; font-weight: bold }
 | 
			
		||||
/* Operator */ .chroma .o {  }
 | 
			
		||||
/* OperatorWord */ .chroma .ow { color: #008800 }
 | 
			
		||||
/* Punctuation */ .chroma .p {  }
 | 
			
		||||
/* Comment */ .chroma .c { color: #888888 }
 | 
			
		||||
/* CommentHashbang */ .chroma .ch { color: #888888 }
 | 
			
		||||
/* CommentMultiline */ .chroma .cm { color: #888888 }
 | 
			
		||||
/* CommentSingle */ .chroma .c1 { color: #888888 }
 | 
			
		||||
/* CommentSpecial */ .chroma .cs { color: #cc0000; background-color: #fff0f0; font-weight: bold }
 | 
			
		||||
/* CommentPreproc */ .chroma .cp { color: #cc0000; font-weight: bold }
 | 
			
		||||
/* CommentPreprocFile */ .chroma .cpf { color: #cc0000; font-weight: bold }
 | 
			
		||||
/* Generic */ .chroma .g {  }
 | 
			
		||||
/* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd }
 | 
			
		||||
/* GenericEmph */ .chroma .ge { font-style: italic }
 | 
			
		||||
/* GenericError */ .chroma .gr { color: #aa0000 }
 | 
			
		||||
/* GenericHeading */ .chroma .gh { color: #333333 }
 | 
			
		||||
/* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd }
 | 
			
		||||
/* GenericOutput */ .chroma .go { color: #888888 }
 | 
			
		||||
/* GenericPrompt */ .chroma .gp { color: #555555 }
 | 
			
		||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
 | 
			
		||||
/* GenericSubheading */ .chroma .gu { color: #666666 }
 | 
			
		||||
/* GenericTraceback */ .chroma .gt { color: #aa0000 }
 | 
			
		||||
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
 | 
			
		||||
/* TextWhitespace */ .chroma .w { color: #bbbbbb }
 | 
			
		||||
@ -23,7 +23,10 @@
 | 
			
		||||
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
 | 
			
		||||
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script>
 | 
			
		||||
	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
 | 
			
		||||
	{{ $syntax := resources.Get "css/syntax.css" | resources.Minify | resources.Fingerprint }}
 | 
			
		||||
	<link rel="stylesheet" href="{{ $syntax.RelPermalink }}" integrity="{{ $syntax.Data.Integrity }}">
 | 
			
		||||
 | 
			
		||||
	</link>
 | 
			
		||||
	<style>
 | 
			
		||||
	.heading > .heading-link {
 | 
			
		||||
		opacity: 0
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user