From ccd4840c4290150b9340002a73aa6913e04248a8 Mon Sep 17 00:00:00 2001 From: Yves Quemener Date: Sat, 24 Aug 2019 16:29:38 +0900 Subject: [PATCH] Alternate optional parsing mechanism --- boards/init.lua | 10 +++++++++- signs/init.lua | 9 +++++++++ signs/mod.conf | 2 +- signs/nodes.lua | 7 ++++--- signs_api/init.lua | 13 +++++++++++-- signs_api/mod.conf | 2 +- steles/init.lua | 8 ++++++++ steles/mod.conf | 2 +- steles/nodes.lua | 5 +++-- 9 files changed, 47 insertions(+), 11 deletions(-) diff --git a/boards/init.lua b/boards/init.lua index 4126a6c..52d9540 100644 --- a/boards/init.lua +++ b/boards/init.lua @@ -22,6 +22,14 @@ boards = {} boards.name = minetest.get_current_modname() boards.path = minetest.get_modpath(boards.name) +-- Load support for utfparse +local UParse +if minetest.global_exists("utfparse") then + UParse = function(...) return utfparse.parse(...) end +else + UParse = function(...) return ... end +end + -- Load support for intllib. local S, NS = dofile(boards.path.."/intllib.lua") boards.intllib = S @@ -43,7 +51,7 @@ end local function on_receive_fields(pos, formname, fields, player) if fields then if fields.ok or fields.key_enter then - signs_api.set_display_text(pos, fields.display_text, fields.font) + signs_api.set_display_text(pos, UParse(fields.display_text), fields.font) end if fields.wipe then signs_api.set_display_text(pos, "", fields.font) diff --git a/signs/init.lua b/signs/init.lua index 4f9239f..5ac0a7e 100644 --- a/signs/init.lua +++ b/signs/init.lua @@ -26,6 +26,15 @@ signs.path = minetest.get_modpath(signs.name) local S, NS = dofile(signs.path.."/intllib.lua") signs.intllib = S +-- Load support for utfparse +local UParse +if minetest.global_exists("utfparse") then + UParse = function(...) return utfparse.parse(...) end +else + UParse = function(...) return ... end +end +signs.utfparse = UParse + dofile(signs.path.."/common.lua") dofile(signs.path.."/nodes.lua") dofile(signs.path.."/crafts.lua") diff --git a/signs/mod.conf b/signs/mod.conf index 81d1358..867e281 100644 --- a/signs/mod.conf +++ b/signs/mod.conf @@ -1,4 +1,4 @@ name=signs description=Basic signs and posters with text display using signs_api depends=default,dye,signs_api -optional_depends=intllib +optional_depends=intllib,utfparse diff --git a/signs/nodes.lua b/signs/nodes.lua index b04c463..aa14412 100644 --- a/signs/nodes.lua +++ b/signs/nodes.lua @@ -18,6 +18,7 @@ along with signs. If not, see . --]] +local UParse = signs.utfparse local S = signs.intllib local F = function(...) return minetest.formspec_escape(S(...)) end @@ -91,9 +92,9 @@ local function on_receive_fields_poster(pos, formname, fields, player) if formname == node.name.."@"..minetest.pos_to_string(pos)..":edit" then if (fields.write or fields.font or fields.key_enter) then - meta:set_string("display_text", fields.display_text) - meta:set_string("text", fields.text) - meta:set_string("infotext", "\""..fields.display_text + meta:set_string("display_text", UParse(fields.display_text)) + meta:set_string("text", UParse(fields.text)) + meta:set_string("infotext", "\""..UParse(fields.display_text) .."\"\n"..S("(right-click to read more text)")) display_api.update_entities(pos) end diff --git a/signs_api/init.lua b/signs_api/init.lua index 1bd00d6..28334bf 100644 --- a/signs_api/init.lua +++ b/signs_api/init.lua @@ -22,6 +22,15 @@ signs_api = {} signs_api.name = minetest.get_current_modname() signs_api.path = minetest.get_modpath(signs_api.name) +-- Load support for utfparse +local UParse +if minetest.global_exists("utfparse") then + UParse = function(...) return utfparse.parse(...) end +else + UParse = function(...) return ... end +end +signs_api.utfparse = UParse + -- Load support for intllib. local S, NS = dofile(signs_api.path.."/intllib.lua") signs_api.intllib = S @@ -77,10 +86,10 @@ end function signs_api.on_receive_fields(pos, formname, fields, player) if not minetest.is_protected(pos, player:get_player_name()) then if fields and (fields.ok or fields.key_enter) then - signs_api.set_display_text(pos, fields.display_text) + signs_api.set_display_text(pos, UParse(fields.display_text)) end if fields and (fields.font) then - signs_api.set_display_text(pos, fields.display_text) + signs_api.set_display_text(pos, UParse(fields.display_text)) font_api.show_font_list(player, pos) end end diff --git a/signs_api/mod.conf b/signs_api/mod.conf index 94ebf6a..dc40f20 100644 --- a/signs_api/mod.conf +++ b/signs_api/mod.conf @@ -1,4 +1,4 @@ name=signs_api description=A library providing various helper functions for registereing signs with text display depends=default,display_api,font_api -optional_depends=intllib +optional_depends=intllib,utfparse diff --git a/steles/init.lua b/steles/init.lua index e5d2430..4132ec2 100644 --- a/steles/init.lua +++ b/steles/init.lua @@ -25,6 +25,14 @@ steles.path = minetest.get_modpath(steles.name) -- Load support for intllib. local S, NS = dofile(steles.path.."/intllib.lua") steles.intllib = S +-- Load support for utfparse +local UParse +if minetest.global_exists("utfparse") then + UParse = function(...) return utfparse.parse(...) end +else + UParse = function(...) return ... end +end +steles.utfparse = UParse dofile(steles.path.."/config.lua") dofile(steles.path.."/nodes.lua") diff --git a/steles/mod.conf b/steles/mod.conf index 2b29f05..8954a71 100644 --- a/steles/mod.conf +++ b/steles/mod.conf @@ -1,4 +1,4 @@ name=steles description=Stone steles with text display on them depends=default,display_api,font_api -optional_depends=intllib,technic +optional_depends=intllib,technic,utfparse diff --git a/steles/nodes.lua b/steles/nodes.lua index 2245e20..d354452 100644 --- a/steles/nodes.lua +++ b/steles/nodes.lua @@ -18,6 +18,7 @@ along with steles. If not, see . --]] +local UParse = steles.utfparse local S = steles.intllib local F = function(...) return minetest.formspec_escape(S(...)) end @@ -79,8 +80,8 @@ for i, material in ipairs(steles.materials) do if not minetest.is_protected(pos, player:get_player_name()) then local meta = minetest.get_meta(pos) if fields.ok or fields.font then - meta:set_string("display_text", fields.display_text) - meta:set_string("infotext", "\""..fields.display_text.."\"") + meta:set_string("display_text", UParse(fields.display_text)) + meta:set_string("infotext", "\""..UParse(fields.display_text).."\"") display_api.update_entities(pos) end if fields.font then