From 06d35ec9bf48e5fd96952cca5264d92742cf31db Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Thu, 1 Nov 2018 12:25:47 +0100 Subject: Rewrited split_lines to avoid a string.split bug if first line empty --- font_api/font.lua | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'font_api') 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 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 -------------------------------------------------------------------------------- -- cgit v1.2.3