Skip to content

Commit

Permalink
fix: make lua implemented hilbish interfaces documented
Browse files Browse the repository at this point in the history
  • Loading branch information
TorchedSammy committed Dec 24, 2024
1 parent c969f5e commit b1e074c
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 30 deletions.
52 changes: 44 additions & 8 deletions cmd/docgen/docgen.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
local fs = require 'fs'
local emmyPattern = '^%-%-%- (.+)'
local modpattern = '^%-+ @module (%w+)'
local modpattern = '^%-+ @module (.+)'
local pieces = {}

local files = fs.readdir 'nature'
Expand All @@ -19,6 +19,8 @@ for _, fname in ipairs(files) do
local docPiece = {}
local lines = {}
local lineno = 0
local tocPos
local tocSearch = false
for line in f:lines() do
lineno = lineno + 1
lines[lineno] = line
Expand Down Expand Up @@ -81,30 +83,64 @@ description: %s
layout: doc
menu:
docs:
parent: "Nature"
parent: "%s"
---
]]

for iface, dps in pairs(pieces) do
local mod = iface:match '(%w+)%.' or 'nature'
local path = string.format('docs/%s/%s.md', mod, iface)
local docParent = 'Nature'

path = string.format('docs/%s/%s.md', mod, iface)
if mod ~= 'nature' then
docParent = "API"
path = string.format('docs/api/%s/%s.md', mod, iface)
end

fs.mkdir(fs.dir(path), true)
local f <close> = io.open(path, 'w')
f:write(string.format(header, 'Module', iface, 'No description.'))

local exists = pcall(fs.stat, path)
local newOrNotNature = exists and mod ~= 'nature'

local f <close> = io.open(path, newOrNotNature and 'r+' or 'w+')
if not newOrNotNature then
f:write(string.format(header, 'Module', iface, 'No description.', docParent))
end
print(f)

print(mod, path)
print('mod and path:', mod, path)

local tocSearch = false
local tocPos
for line in f:lines() do
if line:match '^## Functions' then
tocSearch = true
end
if tocSearch and line == '' then
tocSearch = false
tocPos = f:seek() - 1
end
end

for func, docs in pairs(dps) do
f:write(string.format('<hr>\n<div id=\'%s\'>', func))
local sig = string.format('%s.%s(', iface, func)
for idx, param in ipairs(docs.params) do
sig = sig .. ((param.name:gsub('%?$', '')))
if idx ~= #docs.params then sig = sig .. ', ' end
end
sig = sig .. ')'
f:write(string.format([[

if tocPos then
local pos = f:seek()
f:seek('set', tocPos)
f:write(string.format('|<a href="#%s">|%s|\n', func, docs.description[1]))
tocPos = f:seek()
f:seek('set', pos)
end

f:write(string.format('<hr>\n<div id=\'%s\'>\n', func))
f:write(string.format([[
<h4 class='heading'>
%s
<a href="#%s" class='heading-link'>
Expand Down
112 changes: 96 additions & 16 deletions docs/api/hilbish/hilbish.runner.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,22 +57,13 @@ end)
|<a href="#runner.setMode">setMode(cb)</a>|This is the same as the `hilbish.runnerMode` function.|
|<a href="#runner.lua">lua(cmd)</a>|Evaluates `cmd` as Lua input. This is the same as using `dofile`|
|<a href="#runner.sh">sh(cmd)</a>|Runs a command in Hilbish's shell script interpreter.|

<hr>
<div id='runner.setMode'>
<h4 class='heading'>
hilbish.runner.setMode(cb)
<a href="#runner.setMode" class='heading-link'>
<i class="fas fa-paperclip"></i>
</a>
</h4>

This is the same as the `hilbish.runnerMode` function.
It takes a callback, which will be used to execute all interactive input.
In normal cases, neither callbacks should be overrided by the user,
as the higher level functions listed below this will handle it.

#### Parameters
|<a href="#getCurrent">|Returns the current runner by name.|
|<a href="#setCurrent">|Sets the current interactive/command line runner mode.|
|<a href="#add">|Adds a runner to the table of available runners. If runner is a table,|
|<a href="#get">|Get a runner by name.|
|<a href="#set">|Sets a runner by name. The runner table must have the run function in it.|
|<a href="#exec">|Executes cmd with a runner. If runnerName isn't passed, it uses|
### Parameters
`function` **`cb`**


Expand Down Expand Up @@ -114,3 +105,92 @@ This is the equivalent of using `source`.

</div>

<hr>
<div id='getCurrent'>
<h4 class='heading'>
hilbish.runner.getCurrent()
<a href="#getCurrent" class='heading-link'>
<i class="fas fa-paperclip"></i>
</a>
</h4>

Returns the current runner by name.
#### Parameters
This function has no parameters.
</div>

<hr>
<div id='setCurrent'>
<h4 class='heading'>
hilbish.runner.setCurrent(name)
<a href="#setCurrent" class='heading-link'>
<i class="fas fa-paperclip"></i>
</a>
</h4>

Sets the current interactive/command line runner mode.
#### Parameters
`name` **`string`**
</div>

<hr>
<div id='add'>
<h4 class='heading'>
hilbish.runner.add(name, runner)
<a href="#add" class='heading-link'>
<i class="fas fa-paperclip"></i>
</a>
</h4>

Adds a runner to the table of available runners. If runner is a table,
it must have the run function in it.
#### Parameters
`name` **`string`**
`runner` **`function`**
</div>

<hr>
<div id='get'>
<h4 class='heading'>
hilbish.runner.get(name)
<a href="#get" class='heading-link'>
<i class="fas fa-paperclip"></i>
</a>
</h4>

Get a runner by name.
#### Parameters
`name` **`string`**
</div>

<hr>
<div id='set'>
<h4 class='heading'>
hilbish.runner.set(name, runner)
<a href="#set" class='heading-link'>
<i class="fas fa-paperclip"></i>
</a>
</h4>

Sets a runner by name. The runner table must have the run function in it.
#### Parameters
`name` **`string`**
`runner` **`table`**
</div>

<hr>
<div id='exec'>
<h4 class='heading'>
hilbish.runner.exec(cmd, runnerName)
<a href="#exec" class='heading-link'>
<i class="fas fa-paperclip"></i>
</a>
</h4>

Executes cmd with a runner. If runnerName isn't passed, it uses
the user's current runner.
#### Parameters
`cmd` **`string`**
`runnerName` **`string?`**
</div>

10 changes: 5 additions & 5 deletions docs/nature/dirs.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ menu:
---

<hr>
<div id='setOld'>
<div id='setOld'>
<h4 class='heading'>
dirs.setOld(d)
<a href="#setOld" class='heading-link'>
Expand All @@ -22,7 +22,7 @@ Sets the old directory string.
</div>

<hr>
<div id='push'>
<div id='push'>
<h4 class='heading'>
dirs.push()
<a href="#push" class='heading-link'>
Expand All @@ -36,7 +36,7 @@ This function has no parameters.
</div>

<hr>
<div id='peak'>
<div id='peak'>
<h4 class='heading'>
dirs.peak(num)
<a href="#peak" class='heading-link'>
Expand All @@ -50,7 +50,7 @@ Look at `num` amount of recent directories, starting from the latest.
</div>

<hr>
<div id='pop'>
<div id='pop'>
<h4 class='heading'>
dirs.pop(num)
<a href="#pop" class='heading-link'>
Expand All @@ -64,7 +64,7 @@ Remove the specified amount of dirs from the recent directories list.
</div>

<hr>
<div id='recent'>
<div id='recent'>
<h4 class='heading'>
dirs.recent(idx)
<a href="#recent" class='heading-link'>
Expand Down
2 changes: 1 addition & 1 deletion nature/runner.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
--- hilbish.runner
-- @module hilbish.runner
local currentRunner = 'hybrid'
local runners = {}

Expand Down

0 comments on commit b1e074c

Please sign in to comment.