Files
mini/source/mini/lua/lua.utils.cpp
T
JailDoctor 49cb0af228 VERSIÓ 1.5.6:
- [FIX] Acallats warnings en findloader de lua
- [FIX] Acallats alguns 'Illegal music handle' innecesaris
- [NEW] Ara detecta que no s'ha conectat al debuger de vscode i trau els missatges per consola com abans
- [NEW] Missatges de error més clars
- [NEW] Ara també trau els missatges de debug per consola en la versió release
2026-05-13 11:57:08 +02:00

60 lines
1.7 KiB
C++

#include "lua.utils.h"
#include <string>
#include <filesystem>
#include <algorithm>
namespace mini
{
namespace lua
{
namespace debug
{
std::string pathToChunk(const std::string& path) {
std::filesystem::path p(path);
// 1. Normalizar la ruta
p = p.lexically_normal();
// 2. Buscar el directorio "data"
auto it = std::find(p.begin(), p.end(), "data");
if (it == p.end())
return ""; // no es un script Lua válido
// 3. Construir la parte relativa después de "data"
std::filesystem::path rel;
for (++it; it != p.end(); ++it)
rel /= *it;
// 4. Quitar ".lua"
std::string s = rel.string();
if (s.ends_with(".lua"))
s = s.substr(0, s.size() - 4);
// 5. Convertir "/" → "."
for (char& c : s)
if (c == '/')
c = '.';
return s;
}
std::string chunkToPath(const std::string& chunk) {
// 1. Convertir "ia.test" → "ia/test"
std::string rel;
rel.reserve(chunk.size() + 10);
for (char c : chunk)
rel += (c == '.' ? '/' : c);
// 2. Añadir prefijo y sufijo
rel = "data/" + rel + ".lua";
// 3. Convertir a ruta absoluta
std::filesystem::path abs = std::filesystem::current_path() / rel;
return abs.lexically_normal().string();
}
}
}
}