Merge lines.love
This commit is contained in:
commit
d8ec259711
16
colorize.lua
16
colorize.lua
|
@ -60,7 +60,7 @@ function switch_color_based_on_prefix(frag)
|
||||||
end
|
end
|
||||||
frag = rtrim(frag)
|
frag = rtrim(frag)
|
||||||
for _,edge in pairs(Next_state[Current_state]) do
|
for _,edge in pairs(Next_state[Current_state]) do
|
||||||
if edge.prefix and find(frag, edge.prefix, nil, --[[plain]] true) == 1 then
|
if edge.prefix and starts_with(frag, edge.prefix) then
|
||||||
Current_state = edge.target
|
Current_state = edge.target
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
@ -73,21 +73,9 @@ function switch_color_based_on_suffix(frag)
|
||||||
end
|
end
|
||||||
frag = rtrim(frag)
|
frag = rtrim(frag)
|
||||||
for _,edge in pairs(Next_state[Current_state]) do
|
for _,edge in pairs(Next_state[Current_state]) do
|
||||||
if edge.suffix and rfind(frag, edge.suffix, nil, --[[plain]] true) == #frag - #edge.suffix + 1 then
|
if edge.suffix and ends_with(frag, edge.suffix) then
|
||||||
Current_state = edge.target
|
Current_state = edge.target
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function trim(s)
|
|
||||||
return s:gsub('^%s+', ''):gsub('%s+$', '')
|
|
||||||
end
|
|
||||||
|
|
||||||
function ltrim(s)
|
|
||||||
return s:gsub('^%s+', '')
|
|
||||||
end
|
|
||||||
|
|
||||||
function rtrim(s)
|
|
||||||
return s:gsub('%s+$', '')
|
|
||||||
end
|
|
||||||
|
|
|
@ -116,6 +116,8 @@ function find(s, pat, i, plain)
|
||||||
return s:find(pat, i, plain)
|
return s:find(pat, i, plain)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- TODO: avoid the expensive reverse() operations
|
||||||
|
-- Particularly if we only care about literal matches, we don't need all of string.find
|
||||||
function rfind(s, pat, i, plain)
|
function rfind(s, pat, i, plain)
|
||||||
if s == nil then return end
|
if s == nil then return end
|
||||||
local rs = s:reverse()
|
local rs = s:reverse()
|
||||||
|
|
24
text.lua
24
text.lua
|
@ -925,3 +925,27 @@ end
|
||||||
function rtrim(s)
|
function rtrim(s)
|
||||||
return s:gsub('%s+$', '')
|
return s:gsub('%s+$', '')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function starts_with(s, prefix)
|
||||||
|
if #s < #prefix then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
for i=1,#prefix do
|
||||||
|
if s:sub(i,i) ~= prefix:sub(i,i) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function ends_with(s, suffix)
|
||||||
|
if #s < #suffix then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
for i=0,#suffix-1 do
|
||||||
|
if s:sub(#s-i,#s-i) ~= suffix:sub(#suffix-i,#suffix-i) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in New Issue