Started working on more package docs
All checks were successful
Build / build (push) Successful in 1m49s

This commit is contained in:
Leon Mika 2025-01-19 10:11:55 +11:00
parent 80e56ec1a5
commit 42d5a89471
9 changed files with 91 additions and 12 deletions

View file

@ -7,10 +7,13 @@ test:
site: clean site: clean
mkdir build mkdir build
mkdir build/site mkdir build/site
mkdir build/site/core
cp -r _site/* build/site/. cp -r _site/* build/site/.
go run ./cmd/gendocs/main.go ./_docs/index.md > build/site/index.html go run ./cmd/gendocs/main.go ./_docs/index.md build/site/index.html
go run ./cmd/gendocs/main.go ./_docs/core.md > build/site/core/index.html go run ./cmd/gendocs/main.go ./_docs/mod/index.md build/site/mod/index.html
go run ./cmd/gendocs/main.go ./_docs/mod/core.md build/site/mod/core/index.html
go run ./cmd/gendocs/main.go ./_docs/mod/csv.md build/site/mod/csv/index.html
go run ./cmd/gendocs/main.go ./_docs/mod/fs.md build/site/mod/fs/index.html
go run ./cmd/gendocs/main.go ./_docs/mod/os.md build/site/mod/os/index.html
GOOS=js GOARCH=wasm go build -o build/site/playwasm.wasm ./cmd/playwasm/. GOOS=js GOARCH=wasm go build -o build/site/playwasm.wasm ./cmd/playwasm/.
site-deploy: site site-deploy: site

View file

@ -1,7 +1,7 @@
--- ---
--- ---
# Core Functions # Core Builtins
### call ### call
@ -33,15 +33,16 @@ If COL is a hash, BLOCK receives both the key and value of each element.
BLOCK can call `break` and `continue` which will exit out of the loop, or jump to the start of the next iteration BLOCK can call `break` and `continue` which will exit out of the loop, or jump to the start of the next iteration
respectively. respectively.
The return value of `foreach` will be the result of the last iteration, unless `break` is called with a value. The return value of `foreach` will be the result of the last iteration, unless `break` is called with a value.
This is implemented as a macro but can be used in a pipeline.
``` ```
foreach [1 2 3] { |e| foreach [1 2 3] { |e|
echo "Element = $e" echo "Element = $e"
} }
foreach [a:"one" b:"two"] { |k v| [a:"one" b:"two"] | foreach { |k v|
echo "Key $k = $v" echo "Key $k = $v"
} }
``` ```

29
_docs/mod/csv.md Normal file
View file

@ -0,0 +1,29 @@
# CSV Module
Functions for operating over CSV data.
### each-record
```
csv:each-record FILE BLOCK
```
Opens the CSV file at FILE and calls BLOCK on each record. It is expected that this
CSV file has a header which appears as the first row. This command will read and
index the header, then start calling BLOCK from the row directly below the header.
BLOCK is called with the arguments _|row header|_ where:
- _row_ contains the fields of the current row as a list.
- _header_ contains a hash mapping a header name to a field index.
The return value will be nil.
```
csv:each-record "winds.csv" { |row hdr|
set name $row.($hdr.name)
set bearing $row.($hdr.bearing)
echo "Wind $name has bearing $bearing"
}
```

11
_docs/mod/fs.md Normal file
View file

@ -0,0 +1,11 @@
# FS Module
Functions for accessing the file system.
### lines
```
fs:lines FILE
```
Returns a list containing the scanned lines of FILE.

8
_docs/mod/index.md Normal file
View file

@ -0,0 +1,8 @@
# Modules
Modules of the standard library:
- [core](/mod/core): Core builtins
- [csv](/mod/csv): Functions for operating over CSV data.
- [fs](/mod/fs): File system functions
- [os](/mod/os): Operating system functions

17
_docs/mod/os.md Normal file
View file

@ -0,0 +1,17 @@
# OS Module
Functions for accessing the operating system.
### env
```
os:env NAME [DEFAULT]
```
Returns the value of the environment variable NAME. If no environment with NAME
is defined, then DEFAULT will be returned, if specified. Otherwise, nil will be
returned.
```
echo "User's home directory is: " (os:env "HOME")
```

View file

@ -11,7 +11,7 @@
<h1>UCL</h1> <h1>UCL</h1>
<nav> <nav>
<a href="/">Home</a> <a href="/">Home</a>
<a href="/core/">Core</a> <a href="/mod/">Modules</a>
<a href="/playground/">Playground</a> <a href="/playground/">Playground</a>
</nav> </nav>
</header> </header>

View file

@ -9,7 +9,7 @@
<h1>UCL</h1> <h1>UCL</h1>
<nav> <nav>
<a href="/">Home</a> <a href="/">Home</a>
<a href="/core/">Core</a> <a href="/mod/">Modules</a>
<a href="/playground/">Playground</a> <a href="/playground/">Playground</a>
</nav> </nav>
</header> </header>

View file

@ -10,6 +10,7 @@ import (
"html/template" "html/template"
"log" "log"
"os" "os"
"path/filepath"
) )
//go:embed frame.tmpl //go:embed frame.tmpl
@ -18,13 +19,16 @@ var frameTmpl embed.FS
func main() { func main() {
flag.Parse() flag.Parse()
if flag.NArg() != 1 { if flag.NArg() != 2 {
log.Fatalln("usage: gendocs [markdown]") log.Fatalln("usage: gendocs MARKDOWN OUTFILE")
} }
srcFile := flag.Arg(0)
dstFile := flag.Arg(1)
md := goldmark.New(goldmark.WithExtensions(&frontmatter.Extender{})) md := goldmark.New(goldmark.WithExtensions(&frontmatter.Extender{}))
mdData, err := os.ReadFile(flag.Arg(0)) mdData, err := os.ReadFile(srcFile)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
@ -57,5 +61,11 @@ func main() {
log.Fatal(err) log.Fatal(err)
} }
os.Stdout.Write(res.Bytes()) destDir := filepath.Dir(dstFile)
if err := os.MkdirAll(destDir, 0755); err != nil {
log.Fatal(err)
}
if err := os.WriteFile(dstFile, res.Bytes(), 0644); err != nil {
log.Fatal(err)
}
} }