mirror of
https://github.com/appgurueu/modlib.git
synced 2024-11-24 16:23:43 +01:00
Fix text.lines & deprecate text.split_lines
This commit is contained in:
parent
88aca204f3
commit
a4118e04fe
30
text.lua
30
text.lua
@ -91,9 +91,35 @@ end
|
|||||||
|
|
||||||
split_unlimited = split_without_limit
|
split_unlimited = split_without_limit
|
||||||
|
|
||||||
function split_lines(text, limit) return modlib.text.split(text, "\r?\n", limit, true) end
|
--! Does not support Macintosh pre-OSX CR-only line endings
|
||||||
|
--! Deprecated in favor of the `lines` iterator below
|
||||||
|
function split_lines(text, limit)
|
||||||
|
return modlib.text.split(text, "\r?\n", limit, true)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- When reading from a file, directly use `io.lines` instead
|
||||||
|
-- Lines are possibly empty substrings separated by CR, LF or CRLF
|
||||||
|
-- A trailing linefeed is ignored
|
||||||
|
function lines(str)
|
||||||
|
local line_start = 1
|
||||||
|
-- Line iterator
|
||||||
|
return function()
|
||||||
|
if line_start > #str then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local linefeed_start, _, linefeed = str:find("([\r\n][\r\n]?)", line_start)
|
||||||
|
local line
|
||||||
|
if linefeed_start then
|
||||||
|
line = str:sub(line_start, linefeed_start - 1)
|
||||||
|
line_start = linefeed_start + (linefeed == "\r\n" and 2 or 1)
|
||||||
|
else
|
||||||
|
line = str:sub(line_start)
|
||||||
|
line_start = #str + 1
|
||||||
|
end
|
||||||
|
return line
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function lines(text) return text:gmatch"[^\r\n]*" end
|
|
||||||
|
|
||||||
local zero = string.byte"0"
|
local zero = string.byte"0"
|
||||||
local nine = string.byte"9"
|
local nine = string.byte"9"
|
||||||
|
Loading…
Reference in New Issue
Block a user