26 lines
528 B
Lua
26 lines
528 B
Lua
|
local sfind = string.find
|
||
|
local ssub = string.sub
|
||
|
|
||
|
---@param text string
|
||
|
return function (text)
|
||
|
local current = 1
|
||
|
local lines = {}
|
||
|
lines[0] = 1
|
||
|
lines.size = #text
|
||
|
local i = 0
|
||
|
while true do
|
||
|
local pos = sfind(text,'[\r\n]', current)
|
||
|
if not pos then
|
||
|
break
|
||
|
end
|
||
|
i = i + 1
|
||
|
if ssub(text, pos, pos + 1) == '\r\n' then
|
||
|
current = pos + 2
|
||
|
else
|
||
|
current = pos + 1
|
||
|
end
|
||
|
lines[i] = current
|
||
|
end
|
||
|
return lines
|
||
|
end
|