parsav  Diff

Differences From Artifact [926ec15b69]:

To Artifact [e99ea3e622]:


    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