Module:Get entries from dab
Appearance
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
This module implements template:get entries from dab.
Usage
[edit]{{#invoke:Get entries from dab|main}}
-- this module implements [[template:get entries from dab]]
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame)
local page_name = args[1] or ''
local page_content = ''
local entries = {}
if page_name ~= '' then
local title = mw.title.new(page_name)
if title then
if title.redirectTarget then title = title.redirectTarget end
page_content = title:getContent()
end
page_content = mw.ustring.gsub(page_content, '[\r\n]==*%s*[Ss]ee also.*', '')
page_content = mw.ustring.gsub(page_content, '([\r\n]%*)([^%s])', '%1 %2')
end
local k = 2
args[2] = (args[2] or '') == '' and '.' or args[2]
while (args[k] or '') ~= '' do
local pattern = args[k]
if pattern ~= '.' then
for s in mw.ustring.gmatch(page_content, '[\r\n]%*[^\r\n]*[%s%[]' .. pattern .. '[%s%|%],][^\r\n]*') do
table.insert(entries, s)
end
else
for s in mw.ustring.gmatch(page_content, '[\r\n]%*[^\r\n]*') do
table.insert(entries, s)
end
end
k = k + 1
end
return frame:preprocess(table.concat(entries, '\n'))
end
return p