Differences From
Artifact [926ec15b69]:
48 48 do return l+i end
49 49 ::nexti::end
50 50 end
51 51
52 52 local terra scanline_wordend(l: rawstring, max: intptr, n: rawstring, nc: intptr)
53 53 var sl = scanline(l,max,n,nc)
54 54 if sl == nil then return nil else sl = sl + nc end
55 - if sl >= l+max or isws(@sl) then return sl-nc end
55 + if sl >= l+max or not isws(@(sl-1)) then return sl-nc end
56 56 return nil
57 57 end
58 58
59 59 terra m.html(input: pstr, firstline: bool)
60 + if input.ptr == nil then return pstr.null() end
60 61 if input.ct == 0 then input.ct = lib.str.sz(input.ptr) end
61 62
62 63 var md = lib.html.sanitize(input,false)
63 64
64 65 var styled: lib.str.acc styled:init(md.ct)
65 66
66 67 do var i = 0 while i < md.ct do
67 - var wordstart = (i == 0 or isws(md.ptr[i-1]))
68 - var wordend = (i == md.ct - 1 or isws(md.ptr[i+1]))
68 + --var wordstart = (i == 0 or isws(md.ptr[i-1]))
69 + --var wordend = (i == md.ct - 1 or isws(md.ptr[i+1]))
70 + var wordstart = (i + 1 < md.ct and not isws(md.ptr[i+1]))
71 + var wordend = (i == md.ct - 1 or not isws(md.ptr[i-1]))
69 72
70 73 var here = md.ptr + i
71 74 var rem = md.ct - i
72 75 if @here == @'[' then
73 76 var sep = scanline(here,rem, '](', 2)
74 77 var term = scanline(sep+2,rem - ((sep+2)-here), ')', 1)
75 78 if sep ~= nil and term ~= nil then