rolling-6

master
Lars Mueller 2020-02-29 12:55:23 +01:00
parent a64c5e61b2
commit 3077616965
10 changed files with 114 additions and 114 deletions

View File

@ -6,10 +6,10 @@ function minetest.get_player_privs(playername)
return minetest.original_get_player_privs(playername)
end
if cmd_ext then
if cmdlib then
function call_chatcommand(chatter, call)
local last_space, next_space = 1, call:find(" ")
local command_trie, command_name = cmd_ext.chatcommands
local command_trie, command_name = cmdlib.chatcommands
local cmd, suggestion
local total_command_name = {}
repeat
@ -41,7 +41,7 @@ if cmd_ext then
end
else
function call_chatcommand(chatter, call)
local name, params = unpack(string_ext.split(call, " ", 2))
local name, params = unpack(modlib.text.split(call, " ", 2))
if bridges.command_blacklist[name] then
return false, "Command only available from Minetest."
end

View File

@ -53,8 +53,8 @@ local conf_spec={type="table", children={
}
}}
local config=conf.import("adv_chat", conf_spec)
table_ext.add_all(getfenv(1), config)
local config=modlib.conf.import("adv_chat", conf_spec)
modlib.table.add_all(getfenv(1), config)
function load_schemes()
for k, v in pairs(schemes.minetest) do
@ -82,8 +82,8 @@ end
if bridges.discord then
local blacklist_empty=table_ext.is_empty(bridges.discord.blacklist or {})
local whitelist_empty=table_ext.is_empty(bridges.discord.whitelist or {})
local blacklist_empty=modlib.table.is_empty(bridges.discord.blacklist or {})
local whitelist_empty=modlib.table.is_empty(bridges.discord.whitelist or {})
if blacklist_empty then
if not whitelist_empty then
bridges.discord.blacklist=setmetatable(bridges.discord.blacklist, {__index=function(value)
@ -103,10 +103,10 @@ end
if bridges.discord or bridges.irc then
bridges.command_blacklist = table_ext.set(bridges.command_blacklist or {})
bridges.command_whitelist = table_ext.set(bridges.command_whitelist or {})
local blacklist_empty=table_ext.is_empty(bridges.command_blacklist)
local whitelist_empty=table_ext.is_empty(bridges.command_whitelist or {})
bridges.command_blacklist = modlib.table.set(bridges.command_blacklist or {})
bridges.command_whitelist = modlib.table.set(bridges.command_whitelist or {})
local blacklist_empty=modlib.table.is_empty(bridges.command_blacklist)
local whitelist_empty=modlib.table.is_empty(bridges.command_whitelist or {})
if blacklist_empty then
if not whitelist_empty then
bridges.command_blacklist=setmetatable(bridges.command_blacklist, {__index=function(value)

View File

@ -28,19 +28,19 @@ discord_bridge = bridge
bridge.listen(function(line)
local linecontent=line:sub(6)
if string_ext.starts_with(line, "[MSG]") then
local parts=string_ext.split(linecontent, " ", 2)
if modlib.text.starts_with(line, "[MSG]") then
local parts=modlib.text.split(linecontent, " ", 2)
local src=parts[1].."[discord]"
local adv_msg=message.new(chatters[src], nil, parts[2])
adv_msg.sent_to="discord"
send_to_all(adv_msg)
elseif string_ext.starts_with(line, "[GMS]") or string_ext.starts_with(line, "[CGM]") then -- GMS = group message or CGM = channel group message
local parts=string_ext.split(linecontent, " ",3)
elseif modlib.text.starts_with(line, "[GMS]") or modlib.text.starts_with(line, "[CGM]") then -- GMS = group message or CGM = channel group message
local parts=modlib.text.split(linecontent, " ",3)
local source=parts[1]
local targets=string_ext.split_without_limit(parts[2], ",")
local targets=modlib.text.split_without_limit(parts[2], ",")
local msg=parts[3]
local sent_to
if string_ext.starts_with(line, "[CGM]") then
if modlib.text.starts_with(line, "[CGM]") then
sent_to="discord"
end
local targetset={}
@ -56,62 +56,62 @@ bridge.listen(function(line)
elseif (#adv_msg.invalid_mentions) > 1 then
discord_bridge.write("[PMS]#FFFFFF "..source.." The targets "..table.concat(adv_msg.invalid_mentions, ", ").." are inexistant.")
end
elseif string_ext.starts_with(line, "[CMD]") then
local parts=string_ext.split(linecontent, " ", 2)
elseif modlib.text.starts_with(line, "[CMD]") then
local parts=modlib.text.split(linecontent, " ", 2)
local source=parts[1]
local call=parts[2]
local success, retval = call_chatcommand(source.."[discord]", call)
local prefix = "[PMS]#FFFFFF "
if success then prefix = "[SUC]" elseif success == false then prefix = "[ERR]" end
discord_bridge.write(prefix..source.." "..(retval or "No return value."))
elseif string_ext.starts_with(line, "[JOI]") or string_ext.starts_with(line, "[LIS]") then
local parts=string_ext.split(linecontent, " ", 2) --nick & roles
elseif modlib.text.starts_with(line, "[JOI]") or modlib.text.starts_with(line, "[LIS]") then
local parts=modlib.text.split(linecontent, " ", 2) --nick & roles
local chatter=parts[1].."[discord]"
join(chatter, {color=parts[2], roles={}, discord=true})
if string_ext.starts_with(line, "[JOI]") then
if modlib.text.starts_with(line, "[JOI]") then
minetest.chat_send_all(mt_color(chatter)..chatter..minetest.get_color_escape_sequence("#FFFFFF").." joined.")
end
elseif string_ext.starts_with(line, "[EXT]") then
elseif modlib.text.starts_with(line, "[EXT]") then
local chatter = linecontent .. "[discord]"
minetest.chat_send_all(mt_color(chatter)..chatter..minetest.get_color_escape_sequence("#FFFFFF").." left.")
leave(chatter)
elseif string_ext.starts_with(line, "[NCK]") then
local parts=string_ext.split(linecontent, " ", 2) --nick & newnick
elseif modlib.text.starts_with(line, "[NCK]") then
local parts=modlib.text.split(linecontent, " ", 2) --nick & newnick
local chattername=parts[1].."[discord]"
local new_chattername=parts[2].."[discord]"
rename(chattername, new_chattername)
elseif string_ext.starts_with(line, "[ROL]") then
local parts=string_ext.split(linecontent, " ", 3) --name, color, nicks
elseif modlib.text.starts_with(line, "[ROL]") then
local parts=modlib.text.split(linecontent, " ", 3) --name, color, nicks
if not bridges.discord.blacklist[parts[1]] then
if not roles[parts[1]] then
register_role(parts[1], {color=parts[2], discord=true})
end
if parts[3] then
for _,nick in pairs(string_ext.split_without_limit(parts[3], ",")) do
for _,nick in pairs(modlib.text.split_without_limit(parts[3], ",")) do
add_role(nick.."[discord]", parts[1], "discord")
end
end
end
elseif string_ext.starts_with(line, "[DEL]") then --Role is deleted
elseif modlib.text.starts_with(line, "[DEL]") then --Role is deleted
delete_discord_role()
elseif string_ext.starts_with(line, "[REM]") then --User is removed from role
local parts=string_ext.split(linecontent, " ", 2) --role & nick
elseif modlib.text.starts_with(line, "[REM]") then --User is removed from role
local parts=modlib.text.split(linecontent, " ", 2) --role & nick
remove_role(parts[2].."[discord]", parts[1], "discord")
elseif string_ext.starts_with(line, "[ADD]") then --User is added to role
local parts=string_ext.split(linecontent, " ", 2) --role & nick
elseif modlib.text.starts_with(line, "[ADD]") then --User is added to role
local parts=modlib.text.split(linecontent, " ", 2) --role & nick
add_role(parts[2].."[discord]", parts[1], "discord")
elseif string_ext.starts_with(line, "[NAM]") then --Role changes name
local parts=string_ext.split(linecontent, " ", 2) --oldname, newname
elseif modlib.text.starts_with(line, "[NAM]") then --Role changes name
local parts=modlib.text.split(linecontent, " ", 2) --oldname, newname
if not bridges.discord.blacklist[parts[2]] then
if roles[parts[1]].discord then
for chatter,_ in pairs(roles[parts[1]].affected) do
chatters[chatter].roles[parts[1]]=nil
chatters[chatter].roles[parts[2]]="discord"
end
roles[parts[2]]=table_ext.tablecopy(roles[parts[1]])
roles[parts[2]]=modlib.table.tablecopy(roles[parts[1]])
roles[parts[1]]=nil
else
roles[parts[2]]=table_ext.tablecopy(roles[parts[1]])
roles[parts[2]]=modlib.table.tablecopy(roles[parts[1]])
roles[parts[2]].discord=true
for chatter,_ in pairs(roles[parts[1]].affected) do
if chatters[chatter].roles[parts[1]]=="discord" then --Move
@ -124,8 +124,8 @@ bridge.listen(function(line)
else
delete_discord_role(parts[1])
end
elseif string_ext.starts_with(line, "[COL]") then --Role changes color
local parts=string_ext.split(linecontent, " ", 2) --role & color
elseif modlib.text.starts_with(line, "[COL]") then --Role changes color
local parts=modlib.text.split(linecontent, " ", 2) --role & color
if roles[parts[1]].discord then
roles[parts[1]].color=parts[2]
end
@ -133,7 +133,7 @@ bridge.listen(function(line)
end)
-- Pinging
mt_ext.register_globalstep(1, function()
modlib.minetest.register_globalstep(1, function()
bridge.write("[PIN]")
end)

View File

@ -1,5 +1,5 @@
adv_chat={}
extend_mod("adv_chat", "conf")
modlib.mod.extend("adv_chat", "conf")
-- Some IFNDEFS hehe
local bridge_ifndefs={
@ -8,33 +8,33 @@ local bridge_ifndefs={
irc=adv_chat.bridges.irc
}
extend_mod_string("adv_chat", string_ext.handle_ifndefs(file_ext.read(get_resource("adv_chat", "colorize_message.lua")), bridge_ifndefs))
modlib.mod.extend_string("adv_chat", modlib.text.handle_ifndefs(modlib.file.read(modlib.mod.get_resource("adv_chat", "colorize_message.lua")), bridge_ifndefs))
extend_mod_string("adv_chat", string_ext.handle_ifndefs(file_ext.read(get_resource("adv_chat", "main.lua")), bridge_ifndefs))
modlib.mod.extend_string("adv_chat", modlib.text.handle_ifndefs(modlib.file.read(modlib.mod.get_resource("adv_chat", "main.lua")), bridge_ifndefs))
-- Basic API stuff
extend_mod("adv_chat", "unicode")
extend_mod("adv_chat", "closest_color")
extend_mod("adv_chat", "trie")
extend_mod("adv_chat", "text_styles")
extend_mod("adv_chat", "message")
extend_mod("adv_chat", "hud_channels")
modlib.mod.extend("adv_chat", "unicode")
modlib.mod.extend("adv_chat", "closest_color")
modlib.mod.extend("adv_chat", "trie")
modlib.mod.extend("adv_chat", "text_styles")
modlib.mod.extend("adv_chat", "message")
modlib.mod.extend("adv_chat", "hud_channels")
-- Chat bridges
if bridge_ifndefs.bridge then
extend_mod("adv_chat", "chatcommands")
extend_mod("adv_chat", "process_bridges")
modlib.mod.extend("adv_chat", "chatcommands")
modlib.mod.extend("adv_chat", "process_bridges")
local env = minetest.request_insecure_environment() or error("Error: adv_chat needs to be added to the trusted mods for chat bridges to work. See the Readme for more info.")
adv_chat.set_os_execute(env.os.execute)
adv_chat.set_socket(env.require("socket"))
if adv_chat.bridges.irc then
extend_mod("adv_chat", "irc")
modlib.mod.extend("adv_chat", "irc")
end
if adv_chat.bridges.discord then
extend_mod("adv_chat", "discord")
modlib.mod.extend("adv_chat", "discord")
end
adv_chat.build_socket_bridge = nil
@ -44,5 +44,5 @@ end
-- Tests - don't uncomment unless you actually want to test something
--[[
-- -- -- extend_mod("adv_chat", "test")
-- -- -- modlib.mod.extend("adv_chat", "test")
]]

40
irc.lua
View File

@ -11,39 +11,39 @@ irc_bridge = bridge
bridge.listen(function(line)
local linecontent=line:sub(6)
if string_ext.starts_with(line, "[MSG]") then
local parts=string_ext.split(linecontent, " ", 2)
if modlib.text.starts_with(line, "[MSG]") then
local parts=modlib.text.split(linecontent, " ", 2)
local src=parts[1].."[irc]"
local adv_msg=message.new(chatters[src], nil, parts[2])
adv_msg.sent_to="irc"
send_to_all(adv_msg)
elseif string_ext.starts_with(line, "[PMS]") then
local parts=string_ext.split(linecontent, " ", 1)
elseif modlib.text.starts_with(line, "[PMS]") then
local parts=modlib.text.split(linecontent, " ", 1)
local source=parts[1]
local target=parts[2]
local msg=parts[3]
if string_ext.ends_with(target, "[discord]") then
if modlib.text.ends_with(target, "[discord]") then
discord_bridge.write("[PMS]"..source.." "..target.."@you : "..msg)
else
if minetest.get_player_by_name(target_and_msg[1]) then
minetest.chat_send_player(target_and_msg[2])
end
end
elseif string_ext.starts_with(line, "[CMD]") then
local parts=string_ext.split(linecontent, " ", 2)
elseif modlib.text.starts_with(line, "[CMD]") then
local parts=modlib.text.split(linecontent, " ", 2)
local source=parts[1]
local call=parts[2]
local success, retval = call_chatcommand(source.."[irc]", call)
local prefix="Unknown"
if success then prefix="Success" elseif success ~= nil then prefix="Error" end
irc_bridge.write("[PMS]"..source.." "..prefix.." : "..(retval or "No return value."))
elseif string_ext.starts_with(line, "[GMS]") or string_ext.starts_with(line, "[CGM]") then -- GMS = group message or CGM = channel group message
local parts=string_ext.split(linecontent, " ",3)
elseif modlib.text.starts_with(line, "[GMS]") or modlib.text.starts_with(line, "[CGM]") then -- GMS = group message or CGM = channel group message
local parts=modlib.text.split(linecontent, " ",3)
local source=parts[1]
local targets=string_ext.split_without_limit(parts[2], ",")
local targets=modlib.text.split_without_limit(parts[2], ",")
local msg=parts[3]
local sent_to
if string_ext.starts_with(line, "[CGM]") then
if modlib.text.starts_with(line, "[CGM]") then
sent_to="irc"
end
local adv_msg=message.new(chatters[source.."[discord]"], targets, msg)
@ -55,26 +55,26 @@ bridge.listen(function(line)
elseif (#adv_msg.invalid_mentions) > 1 then
irc_bridge.write("[PMS]"..source.." The targets "..table.concat(adv_msg.invalid_mentions, ", ").." are inexistant.")
end
elseif string_ext.starts_with(line, "[JOI]") then
local parts=string_ext.split(linecontent, " ", 3) --nick & color & channel
elseif modlib.text.starts_with(line, "[JOI]") then
local parts=modlib.text.split(linecontent, " ", 3) --nick & color & channel
join(parts[1].."[irc]", {color=parts[2], roles={}, irc=true})
local chattername=parts[1].."[irc]"
minetest.chat_send_all(mt_color(chattername)..
chattername..minetest.get_color_escape_sequence("#FFFFFF").." joined.",
minetest.get_color_escape_sequence(parts[2])..parts[1].."[irc]"..
minetest.get_color_escape_sequence("#FFFFFF").." joined.")
elseif string_ext.starts_with(line, "[EXT]") then
local parts=string_ext.split(linecontent, " ", 2) --nick & reason
elseif modlib.text.starts_with(line, "[EXT]") then
local parts=modlib.text.split(linecontent, " ", 2) --nick & reason
local chattername=parts[1].."[irc]"
minetest.chat_send_all(mt_color(chattername)..chattername..minetest.get_color_escape_sequence("#FFFFFF").." quitted ("..parts[2]..").")
leave(chattername)
elseif string_ext.starts_with(line, "[BYE]") then
local parts=string_ext.split(linecontent, " ", 2) --nick & reason
elseif modlib.text.starts_with(line, "[BYE]") then
local parts=modlib.text.split(linecontent, " ", 2) --nick & reason
local chattername=parts[1].."[irc]"
minetest.chat_send_all(mt_color(chattername)..chattername..minetest.get_color_escape_sequence("#FFFFFF").." left ("..parts[2]..").")
leave(chattername)
elseif string_ext.starts_with(line, "[NCK]") then
local parts=string_ext.split(linecontent, " ", 2) --nick & newnick
elseif modlib.text.starts_with(line, "[NCK]") then
local parts=modlib.text.split(linecontent, " ", 2) --nick & newnick
local chattername=parts[1].."[irc]"
local new_chattername=parts[2].."[irc]"
rename(chattername, new_chattername)
@ -82,7 +82,7 @@ bridge.listen(function(line)
end)
-- Pinging
mt_ext.register_globalstep(1, function()
modlib.minetest.register_globalstep(1, function()
bridge.write("[PIN]")
end)

View File

@ -70,12 +70,12 @@ scheme={minetest={mention_prefix=minetest.get_color_escape_sequence("#FFFF66")..
delim=" : "}}
function save_data()
data.save_json("chatroles", "to_be_sent", to_be_sent)
modlib.data.save_json("chatroles", "to_be_sent", to_be_sent)
end
to_be_sent=data.load_json("chatroles","to_be_sent") or {}
to_be_sent=modlib.data.load_json("chatroles","to_be_sent") or {}
mt_ext.register_globalstep(30, save_data) -- TODO introduce config var
modlib.minetest.register_globalstep(30, save_data) -- TODO introduce config var
minetest.register_on_shutdown(save_data)
-- TODO override minetest chat send player ?
@ -125,7 +125,7 @@ function send_to_targets(msg)
for target, _ in pairs(msg.targets) do
if not chatters[target] then
if roles[target] then
table_ext.add_all(msg.targets, roles[target].affected)
modlib.table.add_all(msg.targets, roles[target].affected)
end
msg.targets[target]=nil
end
@ -245,7 +245,7 @@ end)
function register_role(rolename, roledef)
roles[rolename]={title=roledef.title, color=roledef.color or "#FFFFFF",affected={}}
player_ext.register_forbidden_name(rolename)
modlib.player.register_forbidden_name(rolename)
end
--IFNDEF bridge
@ -291,7 +291,7 @@ register_role("minetest",{color="#66FF66"})
function unregister_role(rolename)
roles[rolename]=nil
player_ext.unregister_forbidden_name(rolename)
modlib.player.unregister_forbidden_name(rolename)
end
function add_role(player, role, value)
@ -365,7 +365,7 @@ end
function send_to_players(msg, players, origin)
for playername,_ in pairs(players) do
local blocked=player_ext.get_property(playername, "chatroles.blocked")
local blocked=modlib.player.get_property(playername, "chatroles.blocked")
if blocked.players[origin] then
goto continue
for role,_ in ipairs(blocked.roles) do
@ -383,7 +383,7 @@ function get_affected_by_mentions(mentions)
local affected={}
for _, mention in pairs(mentions) do
if roles[mention] then
table_ext.add_all(affected, roles[mention].affected)
modlib.table.add_all(affected, roles[mention].affected)
elseif minetest.get_player_by_name(mention) then
affected[mention]=true
end
@ -456,9 +456,9 @@ on_chat_message=function(sender, msg)
msg_content=msg:sub(delim_space+1)
local msg_header=msg:sub(2, delim_space-1)
local parts=string_ext.split_without_limit(msg_header,",")
local parts=modlib.text.split_without_limit(msg_header,",")
for _, part in pairs(parts) do
table.insert(mentions, string_ext.trim(part, " "))
table.insert(mentions, modlib.text.trim(part, " "))
end
local adv_msg=message.new(chatters[sender], mentions, msg_content)
message.mentionpart(adv_msg)
@ -482,7 +482,7 @@ on_chat_message=function(sender, msg)
end
minetest.register_on_chat_message(on_chat_message)
local prefix = (cmd_ext and "chat ") or "chat_"
local prefix = (cmdlib and "chat ") or "chat_"
minetest.register_chatcommand(prefix.."msg",{
params = "<name> <message>",
@ -494,7 +494,7 @@ minetest.register_chatcommand(prefix.."msg",{
return false, "No message specified"
else
local playername=param:sub(1,delim-1)
if minetest.player_exists(playername) or string_ext.ends_with(playername, "[irc]") or string_ext.ends_with(playername, "[discord]") then
if minetest.player_exists(playername) or modlib.text.ends_with(playername, "[irc]") or modlib.text.ends_with(playername, "[discord]") then
local message=colorize_message(param:sub(delim+1))
if not to_be_sent[playername] then
to_be_sent[playername]={}
@ -534,7 +534,7 @@ minetest.register_chatcommand(prefix.."block", {
description = "Block messages from chatter or role",
privs={},
func = function(sendername, param)
param=string_ext.trim(param)
param=modlib.text.trim(param)
if param:len() == 0 or (not chatters[param] and not roles[param]) then
return false, "No valid chatter name or role given."
end
@ -558,7 +558,7 @@ minetest.register_chatcommand(prefix.."unblock", {
description = "Unblock messages from chatter or role",
privs={},
func = function(sendername, param)
param=string_ext.trim(param)
param=modlib.text.trim(param)
if param:len() == 0 or (not chatters[param] and not roles[param]) then
return false, "No valid chatter name or role given."
end
@ -582,11 +582,11 @@ minetest.register_chatcommand(prefix.."login", {
description = "Log in as (fake) player to execute chatcommands as them",
privs = {chatter=true},
func = function(sendername, param)
param=string_ext.trim(param)
param=modlib.text.trim(param)
if param:len() == 0 then
return false, "No arguments given - missing name and password."
end
local name, password = unpack(string_ext.split(param, " ", 2))
local name, password = unpack(modlib.text.split(param, " ", 2))
password = password or ""
local auth = minetest.get_auth_handler().get_auth(name)
if auth and minetest.check_password_entry(name, auth.password, password) then

View File

@ -22,7 +22,7 @@ function build_socket_bridge(name, logs)
local ip, port = server:getsockname()
local logs=logs or minetest.get_worldpath().."/bridges/"..name.."/logs.txt"
minetest.mkdir(minetest.get_worldpath().."/bridges/"..name)
file_ext.create_if_not_exists(logs, "")
modlib.file.create_if_not_exists(logs, "")
minetest.register_on_shutdown(function()
server:close()
end)
@ -52,7 +52,7 @@ function build_socket_bridge(name, logs)
if next(available) then
local line, error = self.client:receive("*l")
if not error then
if string_ext.starts_with(line, "[KIL]") then
if modlib.text.starts_with(line, "[KIL]") then
minetest.request_shutdown("adv_chat: "..name..": process terminated: "..line:sub(6))
else
line_consumer(line)
@ -68,30 +68,30 @@ function build_socket_bridge(name, logs)
end
function build_file_bridge(name, input, output, logs)
file_ext.process_bridge_build(name, input, output, logs)
modlib.file.process_bridge_build(name, input, output, logs)
local self = {
info={name=name, ref=file_ext.process_bridges[name]},
info={name=name, ref=modlib.file.process_bridges[name]},
serve=function()
return file_ext.process_bridge_serve(name)
return modlib.file.process_bridge_serve(name)
end,
write=function(line)
return file_ext.process_bridge_write(name, line)
return modlib.file.process_bridge_write(name, line)
end,
listen=function(line_consumer)
function consumer(line)
if string_ext.starts_with(line, "[PIN]") then
if modlib.text.starts_with(line, "[PIN]") then
self.last_ping = minetest.get_gametime()
elseif string_ext.starts_with(line, "[KIL]") then
elseif modlib.text.starts_with(line, "[KIL]") then
minetest.request_shutdown("adv_chat: "..name..": process terminated: "..line:sub(6))
else
return line_consumer(line)
end
end
return file_ext.process_bridge_listen(name, consumer)
return modlib.file.process_bridge_listen(name, consumer)
end
}
self.start=function(process)
file_ext.process_bridge_start(name, process, os_execute)
modlib.file.process_bridge_start(name, process, os_execute)
self.last_ping = minetest.get_gametime()
minetest.register_globalstep(function()
if minetest.get_gametime()-self.last_ping > ping_timeout then

View File

@ -2,7 +2,7 @@
register_hud_channel("score", {mode="stack", hud_base_position={x=0.6, y=0.5}, autoremove_interval=4})
mt_ext.register_globalstep(1, function()
modlib.minetest.register_globalstep(1, function()
if math.random() > 0.5 then
local choice=math.random(1, 3)
local text=({"-", "+", "~"})[choice]..tostring(math.random(1, 50))

View File

@ -67,7 +67,7 @@ local irc_style_to_md={
[irc_strikethrough]="~~", -- Strikethrough
}
local md_style_to_irc=table_ext.flip(irc_style_to_md)
local md_style_to_irc=modlib.table.flip(irc_style_to_md)
local irc_escape={
[irc_bold]=true, [irc_italics]=true, [irc_underlined]=true, [irc_strikethrough]="~~", [irc_disable]=true, [irc_color_reverse]=true, [irc_monospace]=true
@ -153,7 +153,7 @@ function strip_markdown(markdown)
else
local tag, offset = trie.find_longest(markdown_trie, markdown, i)
if tag then
for index, tag_index in table_ext.rpairs(tags) do
for index, tag_index in modlib.table.rpairs(tags) do
local conversion = res[tag_index].conversion and res[tag_index].conversion[tag.name]
if res[tag_index].name == tag.name or conversion then
if tag.space_sensitive and markdown:sub(i-1,i-1) == " " then
@ -222,7 +222,7 @@ function markdown_to_irc(markdown)
else
local tag, offset = trie.find_longest(markdown_trie, markdown, i)
if tag then
for index, tag_index in table_ext.rpairs(tags) do
for index, tag_index in modlib.table.rpairs(tags) do
local conversion = res[tag_index].conversion and res[tag_index].conversion[tag.name]
if res[tag_index].name == tag.name or conversion then
if tag.space_sensitive and markdown:sub(i-1,i-1) == " " then
@ -296,7 +296,7 @@ function markdown_to_irc(markdown)
else
local tag, offset = trie.find_longest(markdown_trie, markdown, i)
if tag then
for index, tag_index in table_ext.rpairs(tags) do
for index, tag_index in modlib.table.rpairs(tags) do
local conversion = res[tag_index].conversion and res[tag_index].conversion[tag.name]
if res[tag_index].name == tag.name or conversion then
if tag.space_sensitive and markdown:sub(i-1,i-1) == " " then
@ -355,7 +355,7 @@ function irc_to_markdown(irc)
table.insert(res, " ")
i=i+1
end
for index, open_md in table_ext.rpairs(active) do
for index, open_md in modlib.table.rpairs(active) do
if open_md == md then
table.remove(active, index)
local i=#res
@ -370,7 +370,7 @@ function irc_to_markdown(irc)
table.insert(res, md)
::noinsert::
elseif char == irc_disable then
for _, md in table_ext.rpairs(active) do
for _, md in modlib.table.rpairs(active) do
table.insert(res, md)
end
active={}
@ -389,7 +389,7 @@ function irc_to_markdown(irc)
table.insert(res, md)
end
else
for index, open_md in table_ext.rpairs(active) do
for index, open_md in modlib.table.rpairs(active) do
if open_md == "||" then
table.remove(active, index)
local j=#res
@ -406,7 +406,7 @@ function irc_to_markdown(irc)
end
i=i+1
end
for _, thing in table_ext.rpairs(active) do
for _, thing in modlib.table.rpairs(active) do
table.insert(res, thing)
end
return table.concat(res)
@ -423,8 +423,8 @@ end
function table_to_hex(color)
return string.format("%02X", color[1])..string.format("%02X", color[2])..string.format("%02X", color[3])
end
table_ext.add_all(conversion_table, user_defined_colors)
local reversed = table_ext.flip(conversion_table)
modlib.table.add_all(conversion_table, user_defined_colors)
local reversed = modlib.table.flip(conversion_table)
for k, v in pairs(reversed) do
reversed[string.upper(k)]=v
reversed[string.lower(k)]=v
@ -514,10 +514,10 @@ elseif color_conv == "disabled" then
else
local color_chooser
if color_conv == "safest" then
local closest_color_basic = closest_color_finder(table_ext.process(user_defined_colors, function(k, color) return hex_to_table(color) end))
local closest_color_basic = closest_color_finder(modlib.table.process(user_defined_colors, function(k, color) return hex_to_table(color) end))
color_chooser = closest_color_basic
else
local closest_color_extended = closest_color_finder(table_ext.process(conversion_table, function(k, color) return hex_to_table(color) end))
local closest_color_extended = closest_color_finder(modlib.table.process(conversion_table, function(k, color) return hex_to_table(color) end))
color_chooser = closest_color_extended
end
function convert_color_to_irc(color)

View File

@ -17,7 +17,7 @@ function parse_utf8_codepoints(message, pattern)
end
number=tonumber(number, 16)
if number then
local utf_8_char=string_ext.utf8(number)
local utf_8_char=modlib.text.utf8(number)
if utf_8_char then
table.insert(rope, message:sub(last_index, begin-1))
table.insert(rope, utf_8_char)