Difference between revisions of "Publications"
From ACES
Line 38: | Line 38: | ||
function p.getBibTeX(entry) | function p.getBibTeX(entry) | ||
local out = {} | local out = {} | ||
table.insert(out, fstr("@%s{%s | table.insert(out, fstr("@%s {%s", entry.entry, entry._pageName)) | ||
for k, v in pairs(fields) do | for k, v in pairs(fields) do | ||
if v.BibTeX and entry[k] and entry[k] ~= "" then | if v.BibTeX and entry[k] and entry[k] ~= "" then | ||
table.insert(out, fstr("%s = {%s} | table.insert(out, fstr("%s = {%s}", k, entry[k])) | ||
end | end | ||
end | end | ||
if entry.date and entry.date ~= "" then | if entry.date and entry.date ~= "" then | ||
local entryDate = date(entry.date) | local entryDate = date(entry.date) | ||
table.insert(out, fstr("year = {%s} | table.insert(out, fstr("year = {%s}", entryDate:getyear())) | ||
table.insert(out, fstr("month = {%s} | table.insert(out, fstr("month = {%s}", entryDate:getmonth())) | ||
end | end | ||
return table.concat(out, "\n") | return table.concat(out, ",\n").."\n}\n" | ||
end | end | ||
Line 68: | Line 68: | ||
} | } | ||
local results = cargo.query(tables, cargoFields, args) | local results = cargo.query(tables, cargoFields, args) | ||
local out = {} | |||
for _, entry in ipairs(results) do | |||
table.insert(out, p.getBibTeX(entry)) | |||
end | |||
return table.concat(out, "") | |||
end | end | ||
Revision as of 02:01, 3 September 2021
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").."\n}\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) local out = {} for _, entry in ipairs(results) do table.insert(out, p.getBibTeX(entry)) end return table.concat(out, "") end -- test: =p._main{} function p.main(frame) return p._main(getArgs(frame)) end return p