diff --git a/mdparse.lua b/mdparse.lua index 9470912..2b9c5a7 100644 --- a/mdparse.lua +++ b/mdparse.lua @@ -10,7 +10,9 @@ function md.parse(md) end newpart() local lm = false + local cc = 0 for c in md:gmatch(".") do + cc = cc + 1 if c == "[" then newpart() elseif c == "(" and lc == "]" then @@ -23,9 +25,28 @@ function md.parse(md) it[#it].addrid = #it.l newpart() elseif c == "\n" and lc == "\n" then + if it[#it-1].content == "\n" then + table.remove(it,#it-1) + end newpart() it[#it].content = "\n\n" newpart() + elseif c == "\n" then + local line = md:sub(1,cc):match(".+\n(.+)") or it[#it].content + print(line:sub(1,1),line) + if line:sub(1,1) == "-" then + print("entry") + newpart() + it[#it].content = "\n" + newpart() + elseif line:sub(1,1) == "#" then + print("title") + newpart() + it[#it].content = "\n" + newpart() + else + it[#it].content = it[#it].content .. c + end else if not lm then it[#it].content = it[#it].content .. c @@ -42,8 +63,8 @@ end function md.reflow(text,len) local words, lines, links = {}, {""}, {} for k,v in ipairs(md.parse(text)) do - if v.content == "\n\n" then - words[#words+1] = {"\n\n"} + if v.content == "\n\n" or v.content == "\n" then + words[#words+1] = {v.content} elseif not v.address then for word in v.content:gmatch("%S+") do words[#words+1] = {word} @@ -59,6 +80,8 @@ function md.reflow(text,len) end links[#links+1] = {#lines, lines[#lines]:len()+1, v[1], v[2]} lines[#lines] = lines[#lines] .. "<"..v[1].."> " + elseif v[1] == "\n" then + lines[#lines+1] = "" elseif v[1] == "\n\n" then lines[#lines+1] = "" lines[#lines+1] = ""