diff options
author | Pierre-Yves Rollo <dev@pyrollo.com> | 2018-11-01 12:25:47 +0100 |
---|---|---|
committer | Pierre-Yves Rollo <dev@pyrollo.com> | 2018-11-01 12:25:47 +0100 |
commit | 06d35ec9bf48e5fd96952cca5264d92742cf31db (patch) | |
tree | d4e4ab3fddf30c5e34c374876aca09328c587fe6 /font_api | |
parent | 95c9da849d98ecee9b040761683e86de81303ccf (diff) | |
download | display_modpack_no_craft-06d35ec9bf48e5fd96952cca5264d92742cf31db.tar.gz display_modpack_no_craft-06d35ec9bf48e5fd96952cca5264d92742cf31db.zip |
Rewrited split_lines to avoid a string.split bug if first line empty
Diffstat (limited to 'font_api')
-rw-r--r-- | font_api/font.lua | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/font_api/font.lua b/font_api/font.lua index db12dba..e12bb4b 100644 --- a/font_api/font.lua +++ b/font_api/font.lua @@ -55,17 +55,17 @@ local function char_to_codepoint(str) end -- Split multiline text into array of lines, with <maxlines> maximum lines. +-- Can not use minetest string.split as it has bug if first line(s) empty local function split_lines(text, maxlines) - local splits = text:split("\n") - if maxlines then - local lines = {} - for num = 1,maxlines do - lines[num] = splits[num] - end - return lines - else - return splits - end + local lines = {} + local pos = 1 + repeat + local found = string.find(text, "\n", pos) + found = found or #text + 1 + lines[#lines + 1] = string.sub(text, pos, found - 1) + pos = found + 1 + until (maxlines and (#lines >= maxlines)) or (pos > (#text + 1)) + return lines end -------------------------------------------------------------------------------- |