summaryrefslogtreecommitdiff
path: root/paper/lua-filters/bibexport/bibexport.lua
diff options
context:
space:
mode:
Diffstat (limited to 'paper/lua-filters/bibexport/bibexport.lua')
-rw-r--r--paper/lua-filters/bibexport/bibexport.lua82
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