Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lint Lua using Luacheck #10123

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/workflows/luacheck.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: Luacheck

on: [ push, pull_request ]

jobs:

luacheck:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Luacheck
uses: lunarmodules/luacheck@v1
27 changes: 27 additions & 0 deletions .luacheckrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
std = "lua54"

max_line_length = false

files["**/test/lua/**"] = {
std = "+pandoc_filter"
}

files["**/test/*.lua"] = {
std = "+pandoc_custom"
}

files["data/**"] = {
std = "+pandoc_custom"
}

files["tools/**"] = {
std = "+pandoc_custom"
}

files["man/**"] = {
std = "+pandoc_script"
}

exclude_files = {
".stack-work"
}
10 changes: 4 additions & 6 deletions data/creole.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@
-- http://www.wikicreole.org/wiki/CheatSheet

-- For better performance we put these functions in local variables:
local P, S, R, Cf, Cc, Ct, V, Cs, Cg, Cb, B, C, Cmt =
lpeg.P, lpeg.S, lpeg.R, lpeg.Cf, lpeg.Cc, lpeg.Ct, lpeg.V,
lpeg.Cs, lpeg.Cg, lpeg.Cb, lpeg.B, lpeg.C, lpeg.Cmt
local P, S, Cc, Ct, V, C = lpeg.P, lpeg.S, lpeg.Cc, lpeg.Ct, lpeg.V, lpeg.C

local whitespacechar = S(" \t\r\n")
local specialchar = S("/*~[]\\{}|")
Expand Down Expand Up @@ -52,7 +50,7 @@ local function ListItem(lev, ch)
end

-- Grammar
G = P{ "Doc",
local grammar = P{ "Doc",
Doc = Ct(V"Block"^0)
/ pandoc.Pandoc ;
Block = blankline^0
Expand Down Expand Up @@ -185,6 +183,6 @@ G = P{ "Doc",
/ pandoc.Strong ;
}

function Reader(input, reader_options)
return lpeg.match(G, tostring(input))
function Reader(input, _reader_options)
return lpeg.match(grammar, tostring(input))
end
12 changes: 6 additions & 6 deletions man/manfilter.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ local text = require('text')
function Header(el)
if el.level == 1 then
return pandoc.walk_block(el, {
Str = function(el)
return pandoc.Str(text.upper(el.text))
Str = function(str_el)
return pandoc.Str(text.upper(str_el.text))
end })
end
end
Expand All @@ -17,11 +17,11 @@ function Table(el)
local rendered = pandoc.write(pandoc.Pandoc({el}), "plain")
local adjusted = rendered -- tame grid table lines
:gsub("%+([=:][=:]+)",
function(s)
return " " .. string.rep("-", #s - 1)
function(str)
return " " .. string.rep("-", #str - 1)
end)
:gsub("(%+[-:][-:]+)",
function(s)
function(_str)
return ""
end)
:gsub("%+\n","\n")
Expand All @@ -39,6 +39,6 @@ function Link(el)
end

-- remove notes
function Note(el)
function Note(_el)
return {}
end
2 changes: 1 addition & 1 deletion pandoc-lua-engine/test/bytestring-reader.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function ByteStringReader (input, opts)
function ByteStringReader (input, _opts)
local chars = pandoc.List{}
for i = 1, #input do
chars:insert(utf8.char(input:byte(i,i)))
Expand Down
2 changes: 1 addition & 1 deletion pandoc-lua-engine/test/bytestring.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function ByteStringWriter (doc, opts)
function ByteStringWriter (_doc, _opts)
local buffer = {}
for i=0, 255 do
table.insert(buffer, string.char(i))
Expand Down
2 changes: 1 addition & 1 deletion pandoc-lua-engine/test/extensions.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function Writer (doc, opts)
function Writer (_doc, opts)
local output = 'smart extension is %s;\ncitations extension is %s\n'
local status = function (ext)
return opts.extensions:includes(ext) and 'enabled' or 'disabled'
Expand Down
4 changes: 2 additions & 2 deletions pandoc-lua-engine/test/lua/block-count.lua
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
local num_blocks = 0

function Block(el)
function Block(_el)
num_blocks = num_blocks + 1
end

function Pandoc(blocks, meta)
function Pandoc(_blocks, _meta)
return pandoc.Pandoc {
pandoc.Para{pandoc.Str(num_blocks)}
}
Expand Down
2 changes: 1 addition & 1 deletion pandoc-lua-engine/test/lua/hello-world-doc.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
return {
{
Pandoc = function(doc)
Pandoc = function(_doc)
local meta = {}
local hello = { pandoc.Str "Hello,", pandoc.Space(), pandoc.Str "World!" }
local blocks = { pandoc.Para(hello) }
Expand Down
2 changes: 1 addition & 1 deletion pandoc-lua-engine/test/lua/implicit-doc-filter.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function Pandoc (doc)
function Pandoc (_doc)
local meta = {}
local hello = { pandoc.Str "Hello,", pandoc.Space(), pandoc.Str "World!" }
local blocks = { pandoc.Para(hello) }
Expand Down
2 changes: 1 addition & 1 deletion pandoc-lua-engine/test/lua/inlines-filter.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function isWorldAfterSpace (fst, snd)
local function isWorldAfterSpace (fst, snd)
return fst and fst.t == 'LineBreak'
and snd and snd.t == 'Str' and snd.text == 'World!'
end
Expand Down
4 changes: 2 additions & 2 deletions pandoc-lua-engine/test/lua/metatable-catch-all.lua
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
local num_inlines = 0

function catch_all(el)
local function catch_all(el)
if el.tag and pandoc.Inline.constructor[el.tag] then
num_inlines = num_inlines + 1
end
end

function Pandoc(blocks, meta)
function Pandoc(_blocks, _meta)
return pandoc.Pandoc {
pandoc.Para{pandoc.Str(num_inlines)}
}
Expand Down
12 changes: 6 additions & 6 deletions pandoc-lua-engine/test/lua/module/pandoc-list.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ local group = tasty.test_group

return {
group 'List as function' {
test('equivalent to List:new', function (x)
test('equivalent to List:new', function ()
local new = List:new {'ramen'}
local list = List {'ramen'}
assert.are_same(new, list)
Expand Down Expand Up @@ -109,25 +109,25 @@ return {
end),
test('leaves original list unchanged', function ()
local primes = List:new {2, 3, 5, 7}
local squares = primes:map(function (x) return x^2 end)
local _ = primes:map(function (x) return x^2 end)
assert.are_same({2, 3, 5, 7}, primes)
end)
},

group 'new' {
test('make table usable as list', function ()
local test = List:new{1, 1, 2, 3, 5}
local out = List:new{1, 1, 2, 3, 5}
assert.are_same(
{1, 1, 4, 9, 25},
test:map(function (x) return x^2 end)
out:map(function (x) return x^2 end)
)
end),
test('return empty list if no argument is given', function ()
assert.are_same({}, List:new())
end),
test('metatable of result is pandoc.List', function ()
local test = List:new{5}
assert.are_equal(List, getmetatable(test))
local out = List:new{5}
assert.are_equal(List, getmetatable(out))
end)
},

Expand Down
2 changes: 0 additions & 2 deletions pandoc-lua-engine/test/lua/module/pandoc-structure.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
local tasty = require 'tasty'
local structure = require 'pandoc.structure'
local path = require 'pandoc.path'
local system = require 'pandoc.system'

local assert = tasty.assert
local test = tasty.test_case
Expand Down
4 changes: 2 additions & 2 deletions pandoc-lua-engine/test/lua/module/pandoc-template.lua
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ return {
)
end),
test('fails on unknown format', function ()
local success, msg = pcall(function ()
local success, _ = pcall(function ()
return pandoc.utils.type(template.default 'nosuchformat')
end)
assert.is_falsy(success)
Expand All @@ -42,7 +42,7 @@ return {
)
end),
test('fails on non-existent file', function ()
local success, msg = pcall(function ()
local success, _ = pcall(function ()
return pandoc.utils.type(template.get 'nosuchfile.nope')
end)
assert.is_falsy(success)
Expand Down
3 changes: 2 additions & 1 deletion pandoc-lua-engine/test/lua/module/pandoc-utils.lua
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ return {
test("doesn't change the local environment by default", function ()
pandoc.system.with_temporary_directory('lua-filter', function (dir)
local filter_path = pandoc.path.join{dir, 'test.lua'}
-- luacheck: ignore foo
local foo
local filter = 'foo = 42'
local fh = io.open(filter_path, 'wb')
Expand Down Expand Up @@ -284,7 +285,7 @@ return {

group 'to_simple_table' {
test('convertes Table', function ()
function simple_cell (blocks)
local function simple_cell (blocks)
return {
attr = pandoc.Attr(),
alignment = "AlignDefault",
Expand Down
2 changes: 1 addition & 1 deletion pandoc-lua-engine/test/lua/module/pandoc.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ local test = tasty.test_case
local group = tasty.test_group
local assert = tasty.assert

function os_is_windows ()
local function os_is_windows ()
return package.config:sub(1,1) == '\\'
end

Expand Down
7 changes: 3 additions & 4 deletions pandoc-lua-engine/test/sample.lua
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ function Writer (doc, opts)
end

local pipe = pandoc.pipe
local stringify = (require 'pandoc.utils').stringify

-- Choose the image format based on the value of the
-- `image_format` environment variable.
Expand Down Expand Up @@ -80,7 +79,7 @@ end
-- This gives you a fragment. You could use the metadata table to
-- fill variables in a custom lua template. Or, pass `--template=...`
-- to pandoc, and pandoc will do the template processing as usual.
function Doc(body, metadata, variables)
function Doc(body, _metadata, _variables)
local buffer = {}
local function add(s)
table.insert(buffer, s)
Expand Down Expand Up @@ -146,7 +145,7 @@ function Link(s, tgt, tit, attr)
escape(tit,true) .. '"' .. attributes(attr) .. '>' .. s .. '</a>'
end

function Image(s, src, tit, attr)
function Image(_s, src, tit, _attr)
return '<img src="' .. escape(src,true) .. '" title="' ..
escape(tit,true) .. '"/>'
end
Expand Down Expand Up @@ -283,7 +282,7 @@ local function html_align(align)
end
end

function CaptionedImage(src, tit, caption, attr)
function CaptionedImage(src, _tit, caption, attr)
if #caption == 0 then
return '<p><img src="' .. escape(src,true) .. '" id="' .. attr.id ..
'"/></p>'
Expand Down
2 changes: 1 addition & 1 deletion tools/extract-changes.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

function Pandoc(el)
local newblocks = {}
i = 1
local i = 1
while i <= #el.blocks and
not (el.blocks[i].t == "Header" and el.blocks[i].level == 2) do
i = i+1
Expand Down
10 changes: 5 additions & 5 deletions tools/moduledeps.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ end

if not (mode == "tree" or mode == "transitive") then
io.write("Usage: lua moduledeps (tree|transitive) modulename\n")
io.exit(1)
os.exit(1)
end

if #roots == 0 then
io.write("Usage: lua moduledeps modulename+\n")
io.exit(1)
os.exit(1)
end

for line in lines do
Expand All @@ -35,11 +35,11 @@ end

local transitive = {}

function prind(ind, s)
local function prind(ind, s)
io.write(string.rep(" ",ind) .. s .. "\n")
end

function add_transitive_deps(mod)
local function add_transitive_deps(mod)
if transitive[mod] then
return
end
Expand All @@ -53,7 +53,7 @@ function add_transitive_deps(mod)
end
end

function print_direct_deps(mod, ind)
local function print_direct_deps(mod, ind)
ind = ind or 0
prind(ind, mod)
for dep,_ in pairs(dependencies[mod]) do
Expand Down
17 changes: 8 additions & 9 deletions tools/update-lua-module-docs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -264,10 +264,9 @@ local function render_type (name, level, modulename)
local properties = Blocks{}
if next(metatable.docs.properties) then
local propattr = {'type-' .. id .. '-properties'}
local attr
properties:insert(Header(level + 1, "Properties", propattr))
for propname, prop in sorted(metatable.docs.properties) do
attr = {'type-' .. nameprefix .. '.' .. name .. '.' .. propname}
local attr = {'type-' .. nameprefix .. '.' .. name .. '.' .. propname}
properties:insert(Header(level + 2, propname, attr))
properties:insert(
Plain(read_inlines(prop.description) ..
Expand All @@ -280,9 +279,10 @@ local function render_type (name, level, modulename)
if next(metatable.methods) then
local attr = {'type-' .. id .. '-methods'}
methods:insert(Header(level + 1, "Methods", attr))
for _, method in sorted(metatable.methods) do
-- attr = {'type-' .. modulename .. '.' .. name .. '.' .. name}
-- methods:insert(Header(level + 2, name, attr))
-- luacheck: ignore propname
for propname, method in sorted(metatable.methods) do
-- attr = {'type-' .. modulename .. '.' .. name .. '.' .. propname}
-- methods:insert(Header(level + 2, propname, attr))
methods:extend(render_function(documentation(method), level+2, id))
end
end
Expand Down Expand Up @@ -342,12 +342,11 @@ end
local function render_main_pandoc_module (doc)
local constants_section = Blocks{Header(2, "Constants")}
local fields = List{}
for i, field in ipairs(doc.fields) do
for _, field in ipairs(doc.fields) do
if tostring(field.type) == 'string' then
constants_section:extend(render_field(field, 2, "pandoc"))
elseif field.name:match '^[A-Z]' then
-- Ignore (these are the `Block` and `Inline` tables)
else
-- Ignore (these are the `Block` and `Inline` tables)
elseif not field.name:match '^[A-Z]' then
fields:insert(field)
end
end
Expand Down
4 changes: 2 additions & 2 deletions tools/update-readme.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

local f = assert(io.open("MANUAL.txt", "r"))
local manual = f:read("*all")
mdoc = pandoc.read(manual, "markdown")
local mdoc = pandoc.read(manual, "markdown")
f:close()
result = {}
local result = {}

function Div(elem)
local ident = elem.identifier or ""
Expand Down