More actions
No edit summary |
No edit summary |
||
| Line 19: | Line 19: | ||
end | end | ||
if args.chapter then | if args.chapter then | ||
result = result .. ', ' .. formatChapter(args.chapter) | |||
end | end | ||
if args.page then | if args.page then | ||
result = result .. ', page ' .. args.page | result = result .. ', page ' .. args.page | ||
elseif args.pages then | |||
result = result .. ', pages ' .. args.pages | |||
elseif args.location then | |||
result = result .. ', ' .. args.location | |||
elseif args.paragraph then | elseif args.paragraph then | ||
result = result .. ', paragraph ' .. args.paragraph | if tonumber(args.paragraph, 10) then | ||
result = result .. ', paragraph ' .. args.paragraph | |||
else | |||
return error.error({ | |||
message = '<code>paragraph</code> parameter must be an integer' | |||
}) | |||
end | |||
end | end | ||
return result | return result | ||
Revision as of 18:05, 19 January 2025
Documentation for this module may be created at Module:Cite book/doc
local p = {}
local error = require('Module:error')
function p.main(frame)
local args
if frame.getParent then
args = frame:getParent().args
else
args = frame.args
end
local result = ''
if not args.book then
return error.error({
message = '<code>book</code> parameter is required'
})
else
result = formatBookTitle(args.book)
end
if args.chapter then
result = result .. ', ' .. formatChapter(args.chapter)
end
if args.page then
result = result .. ', page ' .. args.page
elseif args.pages then
result = result .. ', pages ' .. args.pages
elseif args.location then
result = result .. ', ' .. args.location
elseif args.paragraph then
if tonumber(args.paragraph, 10) then
result = result .. ', paragraph ' .. args.paragraph
else
return error.error({
message = '<code>paragraph</code> parameter must be an integer'
})
end
end
return result
end
function formatChapter(chapter)
if tonumber(chapter, 10) then
return 'chapter ' .. chapter
else
return chapter
end
end
function formatBookTitle(title)
local page = mw.title.new(title, 0)
if page and page.exists then
return '\'\'[[' .. title .. ']]\'\''
else
return '\'\'' .. title .. '\'\''
end
end
return p