summaryrefslogtreecommitdiff
path: root/paper/scholar-filters/template-helper.lua
diff options
context:
space:
mode:
Diffstat (limited to 'paper/scholar-filters/template-helper.lua')
-rw-r--r--paper/scholar-filters/template-helper.lua43
1 files changed, 43 insertions, 0 deletions
diff --git a/paper/scholar-filters/template-helper.lua b/paper/scholar-filters/template-helper.lua
new file mode 100644
index 0000000..86af339
--- /dev/null
+++ b/paper/scholar-filters/template-helper.lua
@@ -0,0 +1,43 @@
+--[[
+template-helper: generate meta fields to be used in templates.
+
+Copyright © 2017–2018 Albert Krewinkel
+
+Permission to use, copy, modify, and/or distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright notice
+and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+]]
+
+local List = require 'pandoc.List'
+
+function Meta (meta)
+ local function resolve_institute (idx)
+ return meta.institute[tonumber(idx)]
+ end
+
+ for i, author in ipairs(meta.author) do
+ local institute_indices = List:new(author.institute)
+ local institutes = institute_indices:map(resolve_institute)
+ author.institute_indices = institute_indices
+ author.institute = institutes
+ meta.has_equal_contributors = meta.has_equal_contributors
+ or author.equal_contributor
+ meta.has_correspondence = meta.has_correspondence
+ or author.correspondence and author.email
+ end
+
+ for i, institute in ipairs(meta.institute) do
+ institute.index = tostring(i)
+ end
+
+ return meta
+end
+