diff --git a/docs/api/hilbish/hilbish.messages.md b/docs/api/hilbish/hilbish.messages.md index 4c72d3a..fc33a22 100644 --- a/docs/api/hilbish/hilbish.messages.md +++ b/docs/api/hilbish/hilbish.messages.md @@ -1316,3 +1316,211 @@ hilbish.messages.unreadCount() This function has no parameters. +
+
+

+hilbish.messages.all() + + + +

+ +Returns all messages. +#### Parameters +This function has no parameters. +
+ +
+
+

+hilbish.messages.clear() + + + +

+ +Deletes all messages. +#### Parameters +This function has no parameters. +
+ +
+
+

+hilbish.messages.delete(idx) + + + +

+ +Deletes the message at `idx`. +#### Parameters +`idx` **`number`** + + +
+ +
+
+

+hilbish.messages.read(idx) + + + +

+ +Marks a message at `idx` as read. +#### Parameters +`idx` **`number`** + + +
+ +
+
+

+hilbish.messages.send(message) + + + +

+ +Sends a message. +#### Parameters +`message` **`hilbish.message`** + + +
+ +
+
+

+hilbish.messages.readAll() + + + +

+ +Marks all messages as read. +#### Parameters +This function has no parameters. +
+ +
+
+

+hilbish.messages.unreadCount() + + + +

+ +Returns the amount of unread messages. +#### Parameters +This function has no parameters. +
+ +
+
+

+hilbish.messages.all() + + + +

+ +Returns all messages. +#### Parameters +This function has no parameters. +
+ +
+
+

+hilbish.messages.clear() + + + +

+ +Deletes all messages. +#### Parameters +This function has no parameters. +
+ +
+
+

+hilbish.messages.delete(idx) + + + +

+ +Deletes the message at `idx`. +#### Parameters +`idx` **`number`** + + +
+ +
+
+

+hilbish.messages.read(idx) + + + +

+ +Marks a message at `idx` as read. +#### Parameters +`idx` **`number`** + + +
+ +
+
+

+hilbish.messages.send(message) + + + +

+ +Sends a message. +#### Parameters +`message` **`hilbish.message`** + + +
+ +
+
+

+hilbish.messages.readAll() + + + +

+ +Marks all messages as read. +#### Parameters +This function has no parameters. +
+ +
+
+

+hilbish.messages.unreadCount() + + + +

+ +Returns the amount of unread messages. +#### Parameters +This function has no parameters. +
+ diff --git a/docs/api/hilbish/hilbish.runner.md b/docs/api/hilbish/hilbish.runner.md index 8666c16..c4cfbe4 100644 --- a/docs/api/hilbish/hilbish.runner.md +++ b/docs/api/hilbish/hilbish.runner.md @@ -57,11 +57,11 @@ end) |setMode(cb)|This is the same as the `hilbish.runnerMode` function.| |lua(cmd)|Evaluates `cmd` as Lua input. This is the same as using `dofile`| |sh(cmd)|Runs a command in Hilbish's shell script interpreter.| -|exec(cmd, runnerName)|Executes cmd with a runner. If runnerName isn't passed, it uses| -|set(name, runner)|Sets a runner by name. The runner table must have the run function in it.| +|exec(cmd, runnerName)|Executes `cmd` with a runner.| +|set(name, runner)|*Sets* a runner by name. The difference between this function and| |get(name)|Get a runner by name.| -|add(name, runner)|Adds a runner to the table of available runners. If runner is a table,| -|setCurrent(name)|Sets the current interactive/command line runner mode.| +|add(name, runner)|Adds a runner to the table of available runners.| +|setCurrent(name)|Sets Hilbish's runner mode by name.| |getCurrent()|Returns the current runner by name.|
@@ -143,7 +143,7 @@ hilbish.runner.setCurrent(name) -Sets the current interactive/command line runner mode. +Sets Hilbish's runner mode by name. #### Parameters `name` **`string`** @@ -159,14 +159,14 @@ hilbish.runner.add(name, runner) -Adds a runner to the table of available runners. If runner is a table, -it must have the run function in it. +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`** - + Name of the runner `runner` **`function|table`** - + @@ -182,7 +182,7 @@ hilbish.runner.get(name) Get a runner by name. #### Parameters `name` **`string`** - + Name of the runner to retrieve. @@ -195,7 +195,9 @@ hilbish.runner.set(name, runner) -Sets a runner by name. The runner table must have the run function in it. +*Sets* a runner by name. The difference between this function and +add, is set will *not* check if the named runner exists. +The runner table must have the run function in it. #### Parameters `name` **`string`** @@ -214,8 +216,8 @@ hilbish.runner.exec(cmd, runnerName) -Executes cmd with a runner. If runnerName isn't passed, it uses -the user's current runner. +Executes `cmd` with a runner. +If `runnerName` is not specified, it uses the default Hilbish runner. #### Parameters `cmd` **`string`** diff --git a/docs/nature/dirs.md b/docs/nature/dirs.md index b658c98..8b52f8a 100644 --- a/docs/nature/dirs.md +++ b/docs/nature/dirs.md @@ -26,15 +26,17 @@ Sets the old directory string.

-dirs.push() +dirs.push(dir)

-Add `d` to the recent directories list. +Add `dir` to the recent directories list. #### Parameters -This function has no parameters. +`dir` **`string`** + +

@@ -47,6 +49,7 @@ dirs.peak(num) Look at `num` amount of recent directories, starting from the latest. +This returns a table of recent directories, up to the `num` amount. #### Parameters `num` **`number`** diff --git a/docs/nature/doc.md b/docs/nature/doc.md new file mode 100644 index 0000000..b508240 --- /dev/null +++ b/docs/nature/doc.md @@ -0,0 +1,63 @@ +--- +title: Module doc +description: No description. +layout: doc +menu: + docs: + parent: "Nature" +--- + +
+
+

+doc.renderInfoBlock(type, text) + + + +

+ +Renders an info block. An info block is a block of text with +an icon and styled text block. +#### Parameters +`type` **`string`** + Type of info block. The only one specially styled is the `warning`. + +`text` **`string`** + + +
+ +
+
+

+doc.highlight(text) + + + +

+ +Performs basic Lua code highlighting. +#### Parameters +`text` **`string`** + Code/text to do highlighting on. + +
+ +
+
+

+doc.renderCodeBlock(text) + + + +

+ +Assembles and renders a code block. This returns +the supplied text based on the number of command line columns, +and styles it to resemble a code block. +#### Parameters +`text` **`string`** + + +
+ diff --git a/nature/dirs.lua b/nature/dirs.lua index 328b4b7..9c5f645 100644 --- a/nature/dirs.lua +++ b/nature/dirs.lua @@ -1,4 +1,7 @@ -- @module dirs +-- internal directory management +-- The dirs module defines a small set of functions to store and manage +-- directories. local fs = require 'fs' local dirs = {} @@ -35,13 +38,15 @@ function dirRecents(num, remove) end --- Look at `num` amount of recent directories, starting from the latest. +--- This returns a table of recent directories, up to the `num` amount. -- @param num? number function dirs.peak(num) return dirRecents(num) end ---- Add `d` to the recent directories list. -function dirs.push(d) +--- Add `dir` to the recent directories list. +--- @param dir string +function dirs.push(dir) dirs.recentDirs[dirs.recentSize + 1] = nil if dirs.recentDirs[#dirs.recentDirs - 1] ~= d then ok, d = pcall(fs.abs, d) diff --git a/nature/doc.lua b/nature/doc.lua index f0b7e11..a21312a 100644 --- a/nature/doc.lua +++ b/nature/doc.lua @@ -1,13 +1,25 @@ +-- @module doc +-- command-line doc rendering +-- The doc module contains a small set of functions +-- used by the Greenhouse pager to render parts of the documentation pages. +-- This is only documented for the sake of it. It's only intended use +-- is by the Greenhouse pager. local lunacolors = require 'lunacolors' -local M = {} +local doc = {} -function M.highlight(text) +--- Performs basic Lua code highlighting. +--- @param text string Code/text to do highlighting on. +function doc.highlight(text) return text:gsub('\'.-\'', lunacolors.yellow) --:gsub('%-%- .-', lunacolors.black) end -function M.renderCodeBlock(text) +--- Assembles and renders a code block. This returns +--- the supplied text based on the number of command line columns, +--- and styles it to resemble a code block. +--- @param text string +function doc.renderCodeBlock(text) local longest = 0 local lines = string.split(text:gsub('\t', ' '), '\n') @@ -17,14 +29,18 @@ function M.renderCodeBlock(text) end for i, line in ipairs(lines) do - lines[i] = lunacolors.format('{greyBg}' .. ' ' .. M.highlight(line:sub(0, longest)) + lines[i] = lunacolors.format('{greyBg}' .. ' ' .. doc.highlight(line:sub(0, longest)) .. string.rep(' ', longest - line:len()) .. ' ') end return '\n' .. lunacolors.format('{greyBg}' .. table.concat(lines, '\n')) .. '\n' end -function M.renderInfoBlock(type, text) +--- Renders an info block. An info block is a block of text with +--- an icon and styled text block. +--- @param type string Type of info block. The only one specially styled is the `warning`. +--- @param text string +function doc.renderInfoBlock(type, text) local longest = 0 local lines = string.split(text:gsub('\t', ' '), '\n') @@ -34,7 +50,7 @@ function M.renderInfoBlock(type, text) end for i, line in ipairs(lines) do - lines[i] = ' ' .. M.highlight(line:sub(0, longest)) + lines[i] = ' ' .. doc.highlight(line:sub(0, longest)) .. string.rep(' ', longest - line:len()) .. ' ' end @@ -44,4 +60,4 @@ function M.renderInfoBlock(type, text) end return '\n' .. heading .. '\n' .. lunacolors.format('{greyBg}' .. table.concat(lines, '\n')) .. '\n' end -return M +return doc diff --git a/nature/greenhouse/init.lua b/nature/greenhouse/init.lua index fe4c31c..2badfae 100644 --- a/nature/greenhouse/init.lua +++ b/nature/greenhouse/init.lua @@ -1,4 +1,5 @@ --- Greenhouse is a simple text scrolling handler for terminal programs. +-- @module greenhouse +-- Greenhouse is a simple text scrolling handler (pager) for terminal programs. -- The idea is that it can be set a region to do its scrolling and paging -- job and then the user can draw whatever outside it. -- This reduces code duplication for the message viewer diff --git a/nature/greenhouse/page.lua b/nature/greenhouse/page.lua index 51d1440..185ef61 100644 --- a/nature/greenhouse/page.lua +++ b/nature/greenhouse/page.lua @@ -1,3 +1,4 @@ +-- @module greenhouse.page local Object = require 'nature.object' local Page = Object:extend() @@ -10,6 +11,7 @@ function Page:new(title, text) self.children = {} end + function Page:setText(text) self.lines = string.split(text, '\n') end diff --git a/nature/hummingbird.lua b/nature/hummingbird.lua index 058353d..88cb88f 100644 --- a/nature/hummingbird.lua +++ b/nature/hummingbird.lua @@ -1,4 +1,14 @@ -- @module hilbish.messages +-- simplistic message passing +-- The messages interface defines a way for Hilbish-integrated commands, +-- user config and other tasks to send notifications to alert the user.z +-- The `hilbish.message` type is a table with the following keys: +-- `title` (string): A title for the message notification. +-- `text` (string): The contents of the message. +-- `channel` (string): States the origin of the message, `hilbish.*` is reserved for Hilbish tasks. +-- `summary` (string): A short summary of the `text`. +-- `icon` (string): Unicode (preferably standard emoji) icon for the message notification +-- `read` (boolean): Whether the full message has been read or not. local bait = require 'bait' local commander = require 'commander' local lunacolors = require 'lunacolors' @@ -45,6 +55,8 @@ function hilbish.messages.send(message) bait.throw('hilbish.notification', message) end +--- Marks a message at `idx` as read. +--- @param idx number function hilbish.messages.read(idx) local msg = M._messages[idx] if msg then @@ -53,17 +65,20 @@ function hilbish.messages.read(idx) end end +--- Marks all messages as read. function hilbish.messages.readAll() for _, msg in ipairs(hilbish.messages.all()) do hilbish.messages.read(msg.index) end end +--- Returns the amount of unread messages. function hilbish.messages.unreadCount() return unread end --- Deletes the message at `idx`. +--- @param idx number function hilbish.messages.delete(idx) local msg = M._messages[idx] if not msg then @@ -73,12 +88,14 @@ function hilbish.messages.delete(idx) M._messages[idx] = nil end +--- Deletes all messages. function hilbish.messages.clear() for _, msg in ipairs(hilbish.messages.all()) do hilbish.messages.delete(msg.index) end end +--- Returns all messages. function hilbish.messages.all() return M._messages end diff --git a/nature/runner.lua b/nature/runner.lua index 8e3dfb8..86c2ad9 100644 --- a/nature/runner.lua +++ b/nature/runner.lua @@ -6,7 +6,7 @@ local runners = {} hilbish = hilbish --- Get a runner by name. ---- @param name string +--- @param name string Name of the runner to retrieve. --- @return table function hilbish.runner.get(name) local r = runners[name] @@ -18,10 +18,10 @@ function hilbish.runner.get(name) return r end ---- Adds a runner to the table of available runners. If runner is a table, ---- it must have the run function in it. ---- @param name string ---- @param runner function|table +--- Adds a runner to the table of available runners. +--- If runner is a table, it must have the run function in it. +--- @param name string Name of the runner +--- @param runner function|table function hilbish.runner.add(name, runner) if type(name) ~= 'string' then error 'expected runner name to be a table' @@ -42,7 +42,9 @@ function hilbish.runner.add(name, runner) hilbish.runner.set(name, runner) end ---- Sets a runner by name. The runner table must have the run function in it. +--- *Sets* a runner by name. The difference between this function and +--- add, is set will *not* check if the named runner exists. +--- The runner table must have the run function in it. --- @param name string --- @param runner table function hilbish.runner.set(name, runner) @@ -53,11 +55,11 @@ function hilbish.runner.set(name, runner) runners[name] = runner end ---- Executes cmd with a runner. If runnerName isn't passed, it uses ---- the user's current runner. +--- Executes `cmd` with a runner. +--- If `runnerName` is not specified, it uses the default Hilbish runner. --- @param cmd string --- @param runnerName string? ---- @return string, number, string +--- @return table function hilbish.runner.exec(cmd, runnerName) if not runnerName then runnerName = currentRunner end @@ -66,7 +68,7 @@ function hilbish.runner.exec(cmd, runnerName) return r.run(cmd) end ---- Sets the current interactive/command line runner mode. +--- Sets Hilbish's runner mode by name. --- @param name string function hilbish.runner.setCurrent(name) local r = hilbish.runner.get(name)