function markdown:extract/

data modify storage markdown: backup append value {}
data modify storage markdown: backup[-1].0 set from storage markdown: str.0
data modify storage markdown: backup[-1].1 set from storage markdown: str.1
execute store result storage markdown: backup[-1].2 int 1 run scoreboard players get #tok0 markdown
execute store result storage markdown: backup[-1].3 int 1 run scoreboard players get #tok1 markdown
data modify storage markdown: backup[-1].4 set from storage markdown: format

data modify storage markdown: line append value []

function markdown:next_char
function markdown:line/next

data modify storage markdown: line[-2] append value {}
data modify storage markdown: line[-2][-1]."extra" set from storage markdown: line[-1]

execute unless data storage markdown: str{1:"]"} run return run function markdown:line/link/recovery
function markdown:next_char
execute unless data storage markdown: str{1:"("} run return run function markdown:line/link/recovery

function markdown:next_char
scoreboard players operation #tok0 markdown = #tok1 markdown
execute if data storage markdown: str{1:"/"} run return run function markdown:line/link/command
return run function markdown:line/link/text