İçeriğe atla

Modül:Docbunto

Deltarune Wiki sitesinden

Docbunto is an automatic documentation generator for Scribunto modules. The module is based on LuaDoc and LDoc. It produces documentation in the form of MediaWiki markup, using @tag-prefixed comments embedded in the source code of a Scribunto module. The taglet parser & doclet renderer Docbunto uses are also publicly exposed to other modules.

Docbunto code items are introduced by a block comment (--[[]]--), an inline comment with three hyphens (---), or an inline @tag comment. The module can use static code analysis to infer variable names, item privacy (local keyword), tables ({} constructor) and functions (function keyword). MediaWiki formatting is supported.

Items are usually rendered in the order they are defined, if they are public items, or emulated classes extending the Lua primitives.

Documentation

Package items

docbunto.main(frame) (function)
Generates Lua documentation of the current module.
Parameter: frame Scribunto frame object. (Frame)
Returns: Module documentation output. (string)
--- Docbunto is an automatic documentation generator for Scribunto modules.
--  The module is based on LuaDoc and LDoc. It produces documentation in
--  the form of MediaWiki markup, using <code>@tag</code>-prefixed comments
--  embedded in the source code of a Scribunto module. The taglet parser &
--  doclet renderer Docbunto uses are also publicly exposed to other modules.
--  
--  Docbunto code items are introduced by a block comment
--  (<code>--[[]]--</code>), an inline comment with three hyphens
--  (<code>---</code>), or an inline <code>@tag</code> comment.
--  The module can use static code analysis to infer variable names, item
--  privacy (<code>local</code> keyword), tables (<code>{}</code> constructor) and functions
--  (<code>function</code> keyword). MediaWiki formatting is supported.
--  
--  Items are usually rendered in the order they are defined, if they are
--  public items, or emulated classes extending the Lua primitives.
--  
--  @module             docbunto
--  @alias              p
--  @require            Module:User error
--  @author             [[dev:User:8nml]]
--  @author             [[wikipedia:User:Awesome Aasim]]
--  @attribution        [[github:stevedonovan]] (LDoc)
--  <nowiki>
require('strict')

local p = {}

--  Module dependencies.
local parser = require('Module:Docbunto/parser')
local renderer = require('Module:Docbunto/renderer')

--  Docbunto package items.

--- Generates Lua documentation of the current module.
--  @function           p.main
--  @param              {Frame} frame Scribunto frame object.
--  @return             {string} Module documentation output.
function p.main(frame)
	local title = mw.title.getCurrentTitle()
	if
		title.namespace == 8 and
		title.text == 'Scribunto-doc-page-does-not-exist'
	then
		return
	end
	local modname = mw.title.getCurrentTitle().fullText:gsub('/doc', '')
	local data = parser(modname)
	if not data then
		return require('Module:User error')(
			'Missing Lua documentation! Check other modules to see examples how to write Lua module documentation',
			'Modules with missing documentation'
		)
	end
	return renderer(data, frame, modname)
end

return p

--  <nowiki>
Konu ekle