--[[ ************************************************************************ * Copyright 2021 by Bastien Dumont (bastien.dumont@posteo.net) * * This file is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this file. If not, see . * ************************************************************************ ]]-- local function isLineIndication(first, middle, last) return last.t == 'Str' and string.match(last.text, '^l. [^,]+,?$') and middle.t == 'Space' and first.t == 'Str' and string.match(first.text, '.+,$') end local function isCommaAfterLineIndication(lineIndication) return string.match(lineIndication, '.+,$') end function Inlines (inlines) for i = #inlines, 3, -1 do if isLineIndication(inlines[i-2], inlines[i-1], inlines[i]) then firstString = inlines[i-2].text inlines[i-2].text = string.match(firstString, '^[^,]+') if isCommaAfterLineIndication(inlines[i].text) then inlines[i].text = string.match(inlines[i].text, '^[^,]+') inlines:insert(i+1, pandoc.Str(',')) end inlines[i] = pandoc.Superscript(pandoc.Str(string.sub(inlines[i].text, 5))) inlines:remove(i-1) end end return inlines end