greatly improved newline handling
This commit is contained in:
parent
711b6f2157
commit
bb2adacba3
27
mdparse.lua
27
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] = ""
|
||||
|
Loading…
Reference in New Issue
Block a user