-- Get names for Figure and Table in language specified in lang field
local figureword = "Figure"
local tableword = "Table"
local labelnum = ""

local function gettablefig(m)
 -- Get names for Figure and Table specified in language field
    if m.language then
      if m.language["crossref-fig-title"] then
        figureword = pandoc.utils.stringify(m.language["crossref-fig-title"])
      end
      
      if m.language["crossref-tbl-title"] then
        tableword = pandoc.utils.stringify(m.language["crossref-tbl-title"])
      end
    else
      
    end
end


-- Format caption
local caption_formatter = function(p)
  -- If the paragraph content's first element is the figureword or tableword
  if p.content[1] and (p.content[1].text == figureword or p.content[1].text == tableword) then
    -- If the paragraph content's second element is a non-breaking space
    if p.content[2] and p.content[2].text == '\u{a0}' then
      -- If the paragraph content's fourth element is a colon
      if p.content[4] and p.content[4].text == ':' then
            local figuretitle = pandoc.Para({})
            local figurecaption = pandoc.Para({})
            
            local intStart = 0
            -- separate figure title from figure caption
            for i, v in ipairs(p.content) do
              -- Figure/table title
              if i > intStart and i < intStart + 4 then
                if i == 3 then 
                  -- Figure or table number
                  v = pandoc.Str(labelnum) 
                end
                figuretitle.content:extend({v})
              end
              -- Figure/table caption
              if i > intStart + 5 then
                figurecaption.content:extend({v})
              end
            end
            -- enclose figure/table title in a div with custom style
            local figuretitlediv = pandoc.Div(figuretitle)
            figuretitlediv.classes:insert("FigureTitle")
            figuretitlediv.attributes["custom-style"] = "FigureTitle"
            -- enclose figure/table caption in a div with custom style
            local figurecaptiondiv = pandoc.Div(figurecaption)
            figurecaptiondiv.classes:insert("Caption")
            figurecaptiondiv.attributes["custom-style"] = "Caption"
            return {figuretitlediv, figurecaptiondiv}
      end
    end
  end
end

local divcaption = function(div)
  if div.identifier:find("^tbl%-") or div.identifier:find("^fig%-") then
    
    -- Get figure/table prefix and number
    if div.attributes.prefix then
      if div.attributes.fignum then
        labelnum = div.attributes.prefix .. div.attributes.fignum
      end
      if div.attributes.tblnum then
        labelnum = div.attributes.prefix .. div.attributes.tblnum
      end
    end
    
    if FORMAT == "html" then
      div.content = div.content:walk {Plain = caption_formatter}
    end
    if FORMAT == "docx" then
      -- Remove raw openxml from div
      div.content = div.content:walk {RawInline = function(ri) return {} end}
      div.content = div.content:walk {Para = caption_formatter}
    end 
    return div
  end

end

return {
  {Meta = gettablefig},
  {Div = divcaption}
}

