X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=blobdiff_plain;f=pret-lam.lua;h=ce4ac4719696cbdc74add9f36875f2b463b9a1a3;hp=aff6988d8af774ef8f1e1021f954ed3f34e786d9;hb=1687b8573daf7ee73241fa2651ac5bed07c10cdf;hpb=ba27dfb753703acfda3d7165ab2c0a334515c310 diff --git a/pret-lam.lua b/pret-lam.lua index aff6988..ce4ac47 100644 --- a/pret-lam.lua +++ b/pret-lam.lua @@ -6,7 +6,7 @@ local utf = unicode.utf8 -vis = buffers.newvisualizer("lam") +local vis = buffers.newvisualizer("lam") local colors = { "prettytwo", @@ -63,7 +63,7 @@ end local function take_word(str) -- A word must always start with a-z (in particular, λ is not a valid -- start of a word). - res, newstr = utf.match(str, "^([a-zA-Z][%a%d_]+)(.*)") + res, newstr = utf.match(str, "^([a-zA-Z][%a%d%+%-%,_]+)(.*)") return res, newstr or str end @@ -90,8 +90,12 @@ local function do_subscripts(word) if not bases[base] then -- Register that we've added this base bases[base] = true - -- Add a pattern for this base - submatches[#submatches+1] = "^(" .. base .. ")([%a%d,]+)$" + -- Add a patterns for this base. First, the base with a single + -- letter or number subscript. + submatches[#submatches+1] = "^(" .. base .. ")([%a%d])$" + -- Seconde, the base with a longer prefix that includes at least + -- one of +-, (to catch things like ri+1, but not return). + submatches[#submatches+1] = "^(" .. base .. ")([%a%d]*[%-%+%,]+[%a%d%-%+%,]*)$" end end return word @@ -100,7 +104,7 @@ end function vis.begin_of_display() -- Initially allow subscripts using _ or just appending a number (later, -- we will add extra patterns here. - submatches = {"^(.*)_([%a%d,]+)$", "^(.*[^%d])(%d+)$"} + submatches = {"^(%a*)_([%a%d,]+)$", "^(%a+)(%d+)$"} -- This stores all the bases we've encountered so far (to prevent -- duplicates). For each of them there will be a pattern in submatches -- above.