Publications
From ACES
Documentation for this module may be created at Module:Publications/doc
local getArgs = require([[Module:Arguments]]).getArgs
local date = require([[Module:Date]])
local cargo = mw.ext.cargo
local fstr = mw.ustring.format
local p = {}
local fields = {
entry = {},
address = {BibTeX = true},
annote = {BibTeX = true},
author = {BibTeX = true},
booktitle = {BibTeX = true},
chapter = {BibTeX = true},
edition = {BibTeX = true},
editor = {BibTeX = true},
howpublished = {BibTeX = true},
institution = {BibTeX = true},
journal = {BibTeX = true},
note = {BibTeX = true},
number = {BibTeX = true},
organization = {BibTeX = true},
pages = {BibTeX = true},
publisher = {BibTeX = true},
school = {BibTeX = true},
series = {BibTeX = true},
title = {BibTeX = true},
type = {BibTeX = true},
volume = {BibTeX = true},
date = {},
doi = {BibTeX = true},
issn = {BibTeX = true},
isbn = {BibTeX = true},
url = {BibTeX = true},
_pageName = {},
pdf = {}
}
function p.getBibTeX(entry)
local out = {}
table.insert(out, fstr("@%s{%s,", entry.entry, entry._pageName))
for k, v in pairs(fields) do
if v.BibTeX and entry[k] and entry[k] ~= "" then
table.insert(out, fstr("%s = {%s},", k, entry[k]))
end
end
if entry.date and entry.date ~= "" then
local entryDate = date(entry.date)
table.insert(out, fstr("year = {%s},", entryDate:getyear()))
table.insert(out, fstr("month = {%s},", entryDate:getmonth()))
end
return table.concat(out, "\n")
end
function p._main(args)
local tables = 'publication'
local cargoFields = {}
for k, _ in pairs(fields) do table.insert(cargoFields, k) end
cargoFields = table.concat(cargoFields, ",")
local args = {
where = nil,
join = nil,
groupBy = nil,
having = nil,
orderBy = 'date',
limit = nil,
offset = nil
}
local results = cargo.query(tables, cargoFields, args)
mw.logObject(results)
mw.logObject(p.getBibTeX(results[1]))
end
-- test: =p._main{}
function p.main(frame) return p._main(getArgs(frame)) end
return p