diff options
Diffstat (limited to 'paper/lua-filters/bibexport/bibexport.lua')
-rw-r--r-- | paper/lua-filters/bibexport/bibexport.lua | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/paper/lua-filters/bibexport/bibexport.lua b/paper/lua-filters/bibexport/bibexport.lua deleted file mode 100644 index 9174e69..0000000 --- a/paper/lua-filters/bibexport/bibexport.lua +++ /dev/null @@ -1,82 +0,0 @@ -local utils = require 'pandoc.utils' -local List = require 'pandoc.List' - -local citation_id_set = {} - --- Collect all citation IDs. -function Cite (c) - local cs = c.citations - for i = 1, #cs do - citation_id_set[cs[i].id or cs[i].citationId] = true - end -end - ---- Return a list of citation IDs -function citation_ids () - local citations = {}; - for cid, _ in pairs(citation_id_set) do - citations[#citations + 1] = cid - end - return citations -end - -function bibdata (bibliography) - function bibname (bibitem) - if type(bibitem) == 'string' then - return bibitem:gsub('%.bib$', '') - else - -- bibitem is assumed to be a list of inlines - return utils.stringify(pandoc.Span(bibitem)):gsub('%.bib$', '') - end - end - - local bibs = bibliography.t == 'MetaList' - and List.map(bibliography, bibname) - or {bibname(bibliography)} - return table.concat(bibs, ',') -end - -function aux_content(bibliography) - local cites = citation_ids() - table.sort(cites) - local citations = table.concat(cites, ',') - return table.concat( - { - '\\bibstyle{alpha}', - '\\bibdata{' .. bibdata(bibliography) .. '}', - '\\citation{' .. citations .. '}', - '', - }, - '\n' - ) -end - -function write_dummy_aux (bibliography, auxfile) - local filename - if type(auxfile) == 'string' then - filename = auxfile - elseif type(auxfile) == 'table' then - -- assume list of inlines - filename = utils.stringify(pandoc.Span(auxfile)) - else - filename = 'bibexport.aux' - end - local fh = io.open(filename, 'w') - fh:write(aux_content(bibliography)) - fh:close() - io.stdout:write('Aux written to ' .. filename .. '\n') - return filename -end - -function Pandoc (doc) - local meta = doc.meta - if not meta.bibliography then - return nil - else - -- create a dummy .aux file - local auxfile_name = write_dummy_aux(meta.bibliography, meta.auxfile) - os.execute('bibexport ' .. auxfile_name) - io.stdout:write('Output written to bibexport.bib\n') - return nil - end -end |