--- /dev/null
+[submodule "builtin/luax"]
+ path = builtin/luax
+ url = https://github.com/EliasFleckenstein03/luax
--- /dev/null
+--[[ builtin/escapes.lua ]]--
+-- code taken from minetest/builtin/common/misc_helpers.lua with modifications
+
+local escapes = {}
+package.loaded["escapes"] = escapes
+
+escapes.ESCAPE_CHAR = string.char(0x1b)
+
+function escapes.get_color_escape_sequence(color)
+ return escapes.ESCAPE_CHAR .. "(c@" .. color .. ")"
+end
+
+function escapes.get_background_escape_sequence(color)
+ return escapes.ESCAPE_CHAR .. "(b@" .. color .. ")"
+end
+
+function escapes.colorize(color, message)
+ local lines = tostring(message):split("\n", true)
+ local color_code = escapes.get_color_escape_sequence(color)
+
+ for i, line in ipairs(lines) do
+ lines[i] = color_code .. line
+ end
+
+ return table.concat(lines, "\n") .. escapes.get_color_escape_sequence("#ffffff")
+end
+
+function escapes.strip_foreground_colors(str)
+ return (str:gsub(escapes.ESCAPE_CHAR .. "%(c@[^)]+%)", ""))
+end
+
+function escapes.strip_background_colors(str)
+ return (str:gsub(escapes.ESCAPE_CHAR .. "%(b@[^)]+%)", ""))
+end
+
+function escapes.strip_colors(str)
+ return (str:gsub(escapes.ESCAPE_CHAR .. "%([bc]@[^)]+%)", ""))
+end
+
+function escapes.strip_translations(str)
+ return (str
+ :gsub(escapes.ESCAPE_CHAR .. "%(T@[^)]+%)", "")
+ :gsub(escapes.ESCAPE_CHAR .. "[TFE]", ""))
+end
+
+function escapes.strip_all(str)
+ str = escapes.strip_colors(str)
+ str = escapes.strip_translations(str)
+ return str
+end
--- /dev/null
+Subproject commit 130a68dc27f3461838be005b3cb7b8a115e2c21e
--- /dev/null
+#!/usr/bin/env hydra-dragonfire
+local escapes = require("escapes")
+local address, name, password = unpack(arg)
+local client = hydra.client(address)
+
+client:enable("auth")
+client.auth:username(name)
+client.auth:password(password or "")
+
+client:subscribe("chat_msg")
+client:connect()
+
+while not hydra.canceled() do
+ local pkt, interrupt = client:poll()
+
+ if pkt then
+ print(escapes.strip_all(pkt.text))
+ elseif not interrupt then
+ print("disconnected")
+ break
+ end
+end
+
+client:disconnect()
var lastTime = time.Now()
var canceled = false
+//go:embed builtin/luax/init.lua
+var builtinLuaX string
+
//go:embed builtin/vector.lua
-var vectorLibrary string
+var builtinVector string
+
+//go:embed builtin/escapes.lua
+var builtinEscapes string
+
+var builtinFiles = []string{
+ builtinLuaX,
+ builtinVector,
+ builtinEscapes,
+}
var hydraFuncs = map[string]lua.LGFunction{
"client": l_client,
l.SetField(l.NewTypeMetatable("hydra.auth"), "__index", l.SetFuncs(l.NewTable(), authFuncs))
l.SetField(l.NewTypeMetatable("hydra.client"), "__index", l.NewFunction(l_client_index))
- if err := l.DoString(vectorLibrary); err != nil {
- panic(err)
+ for _, str := range builtinFiles {
+ if err := l.DoString(str); err != nil {
+ panic(err)
+ }
}
if err := l.DoFile(os.Args[1]); err != nil {