local vars = {} function string.split(str, sep) sep = sep or '%s' local parts = pandoc.List() for field, s in str:gmatch("([^" .. sep .. "]*)(" .. sep .. "?)") do parts:insert(field) if s == "" then return parts end end end function meta(meta) vars = meta end function str(el) local prefix, varref, suffix = el.text:match('^(.*)%%(.*)%%(.*)$') if varref then local parts = varref:split(".") local var = vars for i = 1, #parts do local part = parts[i] local v = var[part] if not v then return el end var = v end if var then return pandoc.Str(prefix .. var .. suffix) end end return el end return { { Meta = meta }, { Str = str } }