aboutsummaryrefslogtreecommitdiff
path: root/font_api
diff options
context:
space:
mode:
authorPierre-Yves Rollo <dev@pyrollo.com>2018-11-01 12:25:47 +0100
committerPierre-Yves Rollo <dev@pyrollo.com>2018-11-01 12:25:47 +0100
commit06d35ec9bf48e5fd96952cca5264d92742cf31db (patch)
treed4e4ab3fddf30c5e34c374876aca09328c587fe6 /font_api
parent95c9da849d98ecee9b040761683e86de81303ccf (diff)
downloaddisplay_modpack-06d35ec9bf48e5fd96952cca5264d92742cf31db.tar.gz
display_modpack-06d35ec9bf48e5fd96952cca5264d92742cf31db.tar.bz2
display_modpack-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.lua20
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
--------------------------------------------------------------------------------