xrfragment/dist/xrfragment.lua

3162 lines
96 KiB
Lua
Raw Normal View History

2025-01-14 15:36:36 +01:00
-- Generated by Haxe 4.3.6
2023-06-07 17:42:21 +02:00
local _hx_hidden = {__id__=true, hx__closures=true, super=true, prototype=true, __fields__=true, __ifields__=true, __class__=true, __properties__=true, __fields__=true, __name__=true}
_hx_array_mt = {
__newindex = function(t,k,v)
local len = t.length
t.length = k >= len and (k + 1) or len
rawset(t,k,v)
end
}
function _hx_is_array(o)
return type(o) == "table"
and o.__enum__ == nil
and getmetatable(o) == _hx_array_mt
end
function _hx_tab_array(tab, length)
tab.length = length
return setmetatable(tab, _hx_array_mt)
end
function _hx_print_class(obj, depth)
local first = true
local result = ''
for k,v in pairs(obj) do
if _hx_hidden[k] == nil then
if first then
first = false
else
result = result .. ', '
end
if _hx_hidden[k] == nil then
result = result .. k .. ':' .. _hx_tostring(v, depth+1)
end
end
end
return '{ ' .. result .. ' }'
end
function _hx_print_enum(o, depth)
if o.length == 2 then
return o[0]
else
local str = o[0] .. "("
for i = 2, (o.length-1) do
if i ~= 2 then
str = str .. "," .. _hx_tostring(o[i], depth+1)
else
str = str .. _hx_tostring(o[i], depth+1)
end
end
return str .. ")"
end
end
function _hx_tostring(obj, depth)
if depth == nil then
depth = 0
elseif depth > 5 then
return "<...>"
end
local tstr = _G.type(obj)
if tstr == "string" then return obj
elseif tstr == "nil" then return "null"
elseif tstr == "number" then
if obj == _G.math.POSITIVE_INFINITY then return "Infinity"
elseif obj == _G.math.NEGATIVE_INFINITY then return "-Infinity"
elseif obj == 0 then return "0"
elseif obj ~= obj then return "NaN"
else return _G.tostring(obj)
end
elseif tstr == "boolean" then return _G.tostring(obj)
elseif tstr == "userdata" then
local mt = _G.getmetatable(obj)
if mt ~= nil and mt.__tostring ~= nil then
return _G.tostring(obj)
else
return "<userdata>"
end
elseif tstr == "function" then return "<function>"
elseif tstr == "thread" then return "<thread>"
elseif tstr == "table" then
if obj.__enum__ ~= nil then
return _hx_print_enum(obj, depth)
elseif obj.toString ~= nil and not _hx_is_array(obj) then return obj:toString()
elseif _hx_is_array(obj) then
if obj.length > 5 then
return "[...]"
else
local str = ""
for i=0, (obj.length-1) do
if i == 0 then
str = str .. _hx_tostring(obj[i], depth+1)
else
str = str .. "," .. _hx_tostring(obj[i], depth+1)
end
end
return "[" .. str .. "]"
end
elseif obj.__class__ ~= nil then
return _hx_print_class(obj, depth)
else
local buffer = {}
local ref = obj
if obj.__fields__ ~= nil then
ref = obj.__fields__
end
for k,v in pairs(ref) do
if _hx_hidden[k] == nil then
_G.table.insert(buffer, _hx_tostring(k, depth+1) .. ' : ' .. _hx_tostring(obj[k], depth+1))
end
end
return "{ " .. table.concat(buffer, ", ") .. " }"
end
else
_G.error("Unknown Lua type", 0)
return ""
end
end
local function _hx_obj_newindex(t,k,v)
t.__fields__[k] = true
rawset(t,k,v)
end
local _hx_obj_mt = {__newindex=_hx_obj_newindex, __tostring=_hx_tostring}
local function _hx_a(...)
local __fields__ = {};
local ret = {__fields__ = __fields__};
local max = select('#',...);
local tab = {...};
local cur = 1;
while cur < max do
local v = tab[cur];
__fields__[v] = true;
ret[v] = tab[cur+1];
cur = cur + 2
end
return setmetatable(ret, _hx_obj_mt)
end
local function _hx_e()
return setmetatable({__fields__ = {}}, _hx_obj_mt)
end
local function _hx_o(obj)
return setmetatable(obj, _hx_obj_mt)
end
local function _hx_new(prototype)
return setmetatable({__fields__ = {}}, {__newindex=_hx_obj_newindex, __index=prototype, __tostring=_hx_tostring})
end
function _hx_field_arr(obj)
local res = {}
local idx = 0
2023-06-07 17:42:21 +02:00
if obj.__fields__ ~= nil then
obj = obj.__fields__
end
for k,v in pairs(obj) do
if _hx_hidden[k] == nil then
res[idx] = k
idx = idx + 1
end
end
return _hx_tab_array(res, idx)
end
local _hxClasses = {}
local Int = _hx_e();
local Dynamic = _hx_e();
local Float = _hx_e();
local Bool = _hx_e();
local Class = _hx_e();
local Enum = _hx_e();
local _hx_exports = _hx_exports or {}
_hx_exports["xrfragment"] = _hx_exports["xrfragment"] or _hx_e()
local Array = _hx_e()
__lua_lib_lrexlib_Rex = _G.require("rex_pcre2")
2023-06-07 17:42:21 +02:00
__lua_lib_luautf8_Utf8 = _G.require("lua-utf8")
local EReg = _hx_e()
local Math = _hx_e()
local Reflect = _hx_e()
local String = _hx_e()
local Std = _hx_e()
2024-02-16 17:36:27 +01:00
local StringBuf = _hx_e()
2023-06-07 17:42:21 +02:00
local StringTools = _hx_e()
__haxe_IMap = _hx_e()
__haxe_Exception = _hx_e()
__haxe_Log = _hx_e()
__haxe_NativeStackTrace = _hx_e()
2024-02-16 17:36:27 +01:00
__haxe__Template_TemplateExpr = _hx_e()
__haxe_iterators_ArrayIterator = _hx_e()
__haxe_Template = _hx_e()
2023-06-07 17:42:21 +02:00
__haxe_ValueException = _hx_e()
2024-02-16 17:36:27 +01:00
__haxe_ds_List = _hx_e()
__haxe_ds__List_ListNode = _hx_e()
2023-06-07 17:42:21 +02:00
__haxe_ds_StringMap = _hx_e()
__haxe_exceptions_PosException = _hx_e()
__haxe_exceptions_NotImplementedException = _hx_e()
2023-06-07 17:42:21 +02:00
__haxe_iterators_ArrayKeyValueIterator = _hx_e()
__lua_Boot = _hx_e()
__lua_UserData = _hx_e()
__lua_Lib = _hx_e()
__lua_Thread = _hx_e()
2023-11-28 17:39:33 +01:00
__xrfragment_Filter = _hx_e()
2023-06-07 17:42:21 +02:00
__xrfragment_Parser = _hx_e()
__xrfragment_URI = _hx_e()
__xrfragment_XRF = _hx_e()
local _hx_bind, _hx_bit, _hx_staticToInstance, _hx_funcToField, _hx_maxn, _hx_print, _hx_apply_self, _hx_box_mr, _hx_bit_clamp, _hx_table, _hx_bit_raw
local _hx_pcall_default = {};
local _hx_pcall_break = {};
Array.new = function()
local self = _hx_new(Array.prototype)
Array.super(self)
return self
end
Array.super = function(self)
_hx_tab_array(self, 0);
end
Array.__name__ = true
Array.prototype = _hx_e();
Array.prototype.concat = function(self,a)
local _g = _hx_tab_array({}, 0);
local _g1 = 0;
local _g2 = self;
while (_g1 < _g2.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local i = _g2[_g1];
_g1 = _g1 + 1;
_g:push(i);
end;
local ret = _g;
local _g = 0;
while (_g < a.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local i = a[_g];
_g = _g + 1;
ret:push(i);
end;
do return ret end
end
Array.prototype.join = function(self,sep)
local tbl = ({});
local _g_current = 0;
local _g_array = self;
while (_g_current < _g_array.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g_current = _g_current + 1;
local i = _g_array[_g_current - 1];
_G.table.insert(tbl, Std.string(i));
end;
do return _G.table.concat(tbl, sep) end
end
Array.prototype.pop = function(self)
if (self.length == 0) then
do return nil end;
end;
local ret = self[self.length - 1];
self[self.length - 1] = nil;
self.length = self.length - 1;
do return ret end
end
Array.prototype.push = function(self,x)
self[self.length] = x;
do return self.length end
end
Array.prototype.reverse = function(self)
local tmp;
local i = 0;
while (i < Std.int(self.length / 2)) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
tmp = self[i];
self[i] = self[(self.length - i) - 1];
self[(self.length - i) - 1] = tmp;
i = i + 1;
end;
end
Array.prototype.shift = function(self)
if (self.length == 0) then
do return nil end;
end;
local ret = self[0];
if (self.length == 1) then
self[0] = nil;
else
if (self.length > 1) then
self[0] = self[1];
_G.table.remove(self, 1);
end;
end;
local tmp = self;
tmp.length = tmp.length - 1;
do return ret end
end
Array.prototype.slice = function(self,pos,_end)
if ((_end == nil) or (_end > self.length)) then
_end = self.length;
else
if (_end < 0) then
_end = _G.math.fmod((self.length - (_G.math.fmod(-_end, self.length))), self.length);
end;
end;
if (pos < 0) then
pos = _G.math.fmod((self.length - (_G.math.fmod(-pos, self.length))), self.length);
end;
if ((pos > _end) or (pos > self.length)) then
do return _hx_tab_array({}, 0) end;
end;
local ret = _hx_tab_array({}, 0);
local _g = pos;
local _g1 = _end;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
ret:push(self[i]);
end;
do return ret end
end
Array.prototype.sort = function(self,f)
local i = 0;
local l = self.length;
while (i < l) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local swap = false;
local j = 0;
local max = (l - i) - 1;
while (j < max) do _hx_do_first_2 = false;
2023-06-07 17:42:21 +02:00
if (f(self[j], self[j + 1]) > 0) then
local tmp = self[j + 1];
self[j + 1] = self[j];
self[j] = tmp;
swap = true;
end;
j = j + 1;
end;
if (not swap) then
break;
end;
i = i + 1;
end;
end
Array.prototype.splice = function(self,pos,len)
if ((len < 0) or (pos > self.length)) then
do return _hx_tab_array({}, 0) end;
else
if (pos < 0) then
pos = self.length - (_G.math.fmod(-pos, self.length));
end;
end;
len = Math.min(len, self.length - pos);
local ret = _hx_tab_array({}, 0);
local _g = pos;
local _g1 = pos + len;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
ret:push(self[i]);
self[i] = self[i + len];
end;
local _g = pos + len;
local _g1 = self.length;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
self[i] = self[i + len];
end;
local tmp = self;
tmp.length = tmp.length - len;
do return ret end
end
Array.prototype.toString = function(self)
local tbl = ({});
_G.table.insert(tbl, "[");
_G.table.insert(tbl, self:join(","));
_G.table.insert(tbl, "]");
do return _G.table.concat(tbl, "") end
end
Array.prototype.unshift = function(self,x)
local len = self.length;
local _g = 0;
local _g1 = len;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
self[len - i] = self[(len - i) - 1];
end;
self[0] = x;
end
Array.prototype.insert = function(self,pos,x)
if (pos > self.length) then
pos = self.length;
end;
if (pos < 0) then
pos = self.length + pos;
if (pos < 0) then
pos = 0;
end;
end;
local cur_len = self.length;
while (cur_len > pos) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
self[cur_len] = self[cur_len - 1];
cur_len = cur_len - 1;
end;
self[pos] = x;
end
Array.prototype.remove = function(self,x)
local _g = 0;
local _g1 = self.length;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
if (self[i] == x) then
local _g = i;
local _g1 = self.length - 1;
while (_g < _g1) do _hx_do_first_2 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local j = _g - 1;
self[j] = self[j + 1];
end;
self[self.length - 1] = nil;
self.length = self.length - 1;
do return true end;
end;
end;
do return false end
end
Array.prototype.contains = function(self,x)
local _g = 0;
local _g1 = self.length;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
if (self[i] == x) then
do return true end;
end;
end;
do return false end
end
Array.prototype.indexOf = function(self,x,fromIndex)
local _end = self.length;
if (fromIndex == nil) then
fromIndex = 0;
else
if (fromIndex < 0) then
fromIndex = self.length + fromIndex;
if (fromIndex < 0) then
fromIndex = 0;
end;
end;
end;
local _g = fromIndex;
local _g1 = _end;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
if (x == self[i]) then
do return i end;
end;
end;
do return -1 end
end
Array.prototype.lastIndexOf = function(self,x,fromIndex)
if ((fromIndex == nil) or (fromIndex >= self.length)) then
fromIndex = self.length - 1;
else
if (fromIndex < 0) then
fromIndex = self.length + fromIndex;
if (fromIndex < 0) then
do return -1 end;
end;
end;
end;
local i = fromIndex;
while (i >= 0) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
if (self[i] == x) then
do return i end;
else
i = i - 1;
end;
end;
do return -1 end
end
Array.prototype.copy = function(self)
local _g = _hx_tab_array({}, 0);
local _g1 = 0;
local _g2 = self;
while (_g1 < _g2.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local i = _g2[_g1];
_g1 = _g1 + 1;
_g:push(i);
end;
do return _g end
end
Array.prototype.map = function(self,f)
local _g = _hx_tab_array({}, 0);
local _g1 = 0;
local _g2 = self;
while (_g1 < _g2.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local i = _g2[_g1];
_g1 = _g1 + 1;
_g:push(f(i));
end;
do return _g end
end
Array.prototype.filter = function(self,f)
local _g = _hx_tab_array({}, 0);
local _g1 = 0;
local _g2 = self;
while (_g1 < _g2.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local i = _g2[_g1];
_g1 = _g1 + 1;
if (f(i)) then
_g:push(i);
end;
end;
do return _g end
end
Array.prototype.iterator = function(self)
do return __haxe_iterators_ArrayIterator.new(self) end
end
Array.prototype.keyValueIterator = function(self)
do return __haxe_iterators_ArrayKeyValueIterator.new(self) end
end
Array.prototype.resize = function(self,len)
if (self.length < len) then
self.length = len;
else
if (self.length > len) then
local _g = len;
local _g1 = self.length;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
self[i] = nil;
end;
self.length = len;
end;
end;
end
Array.prototype.__class__ = Array
EReg.new = function(r,opt)
local self = _hx_new(EReg.prototype)
EReg.super(self,r,opt)
return self
end
EReg.super = function(self,r,opt)
local ropt = 0;
local _g = 0;
local _g1 = __lua_lib_luautf8_Utf8.len(opt);
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
local _g = __lua_lib_luautf8_Utf8.sub(opt, i + 1, i + 1);
if (_g) == "g" then
self.global = true;
elseif (_g) == "i" then
ropt = _hx_bit.bor(ropt,EReg.FLAGS.CASELESS);
elseif (_g) == "m" then
ropt = _hx_bit.bor(ropt,EReg.FLAGS.MULTILINE);
elseif (_g) == "s" then
ropt = _hx_bit.bor(ropt,EReg.FLAGS.DOTALL);else end;
end;
ropt = _hx_bit.bor(ropt,EReg.FLAGS.UTF);
2023-06-07 17:42:21 +02:00
ropt = _hx_bit.bor(ropt,EReg.FLAGS.UCP);
if (self.global == nil) then
self.global = false;
end;
self.r = __lua_lib_lrexlib_Rex.new(r, ropt);
end
EReg.__name__ = true
EReg.prototype = _hx_e();
EReg.prototype.match = function(self,s)
if (s == nil) then
do return false end;
else
self.m = _hx_table.pack(self.r:exec(s, 1));
self.s = s;
do return self.m[1] ~= nil end;
end;
end
2024-02-16 17:36:27 +01:00
EReg.prototype.matched = function(self,n)
if ((self.m[1] == nil) or (n < 0)) then
_G.error(__haxe_Exception.thrown("EReg::matched"),0);
else
if (n == 0) then
local k = _G.string.sub(self.s, self.m[1], self.m[2]);
do return k end;
else
if (__lua_Boot.__instanceof(self.m[3], _G.table)) then
local mn = 2 * (n - 1);
if (__lua_Boot.__instanceof(self.m[3][mn + 1], Bool)) then
do return nil end;
end;
do return _G.string.sub(self.s, self.m[3][mn + 1], self.m[3][mn + 2]) end;
else
_G.error(__haxe_Exception.thrown("EReg:matched"),0);
end;
end;
end;
end
EReg.prototype.matchedLeft = function(self)
if (self.m[1] == nil) then
_G.error(__haxe_Exception.thrown("No string matched"),0);
end;
do return _G.string.sub(self.s, 1, self.m[1] - 1) end
end
EReg.prototype.matchedRight = function(self)
if (self.m[1] == nil) then
_G.error(__haxe_Exception.thrown("No string matched"),0);
end;
do return _G.string.sub(self.s, self.m[2] + 1) end
end
EReg.prototype.matchedPos = function(self)
local left = self:matchedLeft();
local matched = self:matched(0);
if (self.m[1] == nil) then
_G.error(__haxe_Exception.thrown("No string matched"),0);
end;
do return _hx_o({__fields__={pos=true,len=true},pos=__lua_lib_luautf8_Utf8.len(left),len=__lua_lib_luautf8_Utf8.len(matched)}) end
end
2023-06-07 17:42:21 +02:00
EReg.prototype.split = function(self,s)
if (self.global) then
do return __lua_Lib.fillArray(_hx_wrap_if_string_field(__lua_lib_lrexlib_Rex,'split')(s, self.r)) end;
else
local d = "#__delim__#";
do return __lua_Lib.fillArray(_hx_wrap_if_string_field(__lua_lib_lrexlib_Rex,'split')(self:replace(s, d), d)) end;
end;
end
EReg.prototype.replace = function(self,s,by)
local chunks = String.prototype.split(by, "$$");
2023-06-07 17:42:21 +02:00
local _g = _hx_tab_array({}, 0);
local _g1 = 0;
while (_g1 < chunks.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local chunk = chunks[_g1];
_g1 = _g1 + 1;
_g:push(__lua_lib_lrexlib_Rex.gsub(chunk, "\\$(\\d)", "%%%1", 1));
end;
chunks = _g;
by = chunks:join("$");
do return __lua_lib_lrexlib_Rex.gsub(s, self.r, by, (function()
local _hx_1
if (self.global) then
_hx_1 = nil; else
_hx_1 = 1; end
return _hx_1
end )()) end
end
EReg.prototype.__class__ = EReg
Math.new = {}
Math.__name__ = true
Math.isNaN = function(f)
do return f ~= f end;
end
Math.isFinite = function(f)
if (f > -_G.math.huge) then
do return f < _G.math.huge end;
else
do return false end;
end;
end
Math.min = function(a,b)
if (Math.isNaN(a) or Math.isNaN(b)) then
do return (0/0) end;
else
do return _G.math.min(a, b) end;
end;
end
Reflect.new = {}
Reflect.__name__ = true
Reflect.field = function(o,field)
if (_G.type(o) == "string") then
if (field == "length") then
do return _hx_wrap_if_string_field(o,'length') end;
else
do return String.prototype[field] end;
end;
else
local _hx_status, _hx_result = pcall(function()
do return o[field] end;
return _hx_pcall_default
end)
if not _hx_status and _hx_result == "_hx_pcall_break" then
elseif not _hx_status then
local _g = _hx_result;
do return nil end;
elseif _hx_result ~= _hx_pcall_default then
return _hx_result
end;
end;
end
2024-02-16 17:36:27 +01:00
Reflect.getProperty = function(o,field)
if (o == nil) then
do return nil end;
else
if ((o.__properties__ ~= nil) and (Reflect.field(o, Std.string("get_") .. Std.string(field)) ~= nil)) then
do return Reflect.callMethod(o,Reflect.field(o, Std.string("get_") .. Std.string(field)),_hx_tab_array({}, 0)) end;
else
do return Reflect.field(o, field) end;
end;
end;
end
Reflect.callMethod = function(o,func,args)
if ((args == nil) or (args.length == 0)) then
do return func(o) end;
else
local self_arg = false;
if ((o ~= nil) and (o.__name__ == nil)) then
self_arg = true;
end;
if (self_arg) then
do return func(o, _hx_table.unpack(args, 0, args.length - 1)) end;
else
do return func(_hx_table.unpack(args, 0, args.length - 1)) end;
end;
end;
end
2023-06-07 17:42:21 +02:00
Reflect.fields = function(o)
if (_G.type(o) == "string") then
do return Reflect.fields(String.prototype) end;
else
do return _hx_field_arr(o) end;
end;
end
2024-02-16 17:36:27 +01:00
Reflect.isObject = function(v)
if (v == nil) then
do return false end;
end;
local t = _G.type(v);
2024-02-16 17:36:27 +01:00
if (not ((t == "string") or ((t == "table") and (v.__enum__ == nil)))) then
if (t == "function") then
do return ((function()
local _hx_1
if (_G.type(v) ~= "table") then
_hx_1 = false; else
_hx_1 = v.__name__; end
return _hx_1
end )() or (function()
local _hx_2
if (_G.type(v) ~= "table") then
_hx_2 = false; else
_hx_2 = v.__ename__; end
return _hx_2
end )()) ~= nil end;
else
do return false end;
end;
else
do return true end;
end;
end
2023-06-07 17:42:21 +02:00
Reflect.deleteField = function(o,field)
if (not ((function()
local _hx_1
if ((_G.type(o) == "function") and not ((function()
local _hx_2
if (_G.type(o) ~= "table") then
_hx_2 = false; else
_hx_2 = o.__name__; end
return _hx_2
end )() or (function()
local _hx_3
if (_G.type(o) ~= "table") then
_hx_3 = false; else
_hx_3 = o.__ename__; end
return _hx_3
end )())) then
_hx_1 = false; elseif ((_G.type(o) == "string") and ((String.prototype[field] ~= nil) or (field == "length"))) then
2023-06-07 17:42:21 +02:00
_hx_1 = true; elseif (o.__fields__ ~= nil) then
_hx_1 = o.__fields__[field] ~= nil; else
_hx_1 = o[field] ~= nil; end
return _hx_1
end )())) then
do return false end;
end;
o[field] = nil;
o.__fields__[field] = nil;
do return true end;
end
2023-11-28 17:39:33 +01:00
Reflect.copy = function(o)
if (o == nil) then
do return nil end;
end;
local o2 = _hx_e();
local _g = 0;
local _g1 = Reflect.fields(o);
while (_g < _g1.length) do _hx_do_first_1 = false;
2023-11-28 17:39:33 +01:00
local f = _g1[_g];
_g = _g + 1;
o2[f] = Reflect.field(o, f);
end;
do return o2 end;
end
2023-06-07 17:42:21 +02:00
String.new = function(string)
local self = _hx_new(String.prototype)
String.super(self,string)
self = string
return self
end
String.super = function(self,string)
end
String.__name__ = true
String.__index = function(s,k)
if (k == "length") then
do return __lua_lib_luautf8_Utf8.len(s) end;
else
local o = String.prototype;
local field = k;
if ((function()
local _hx_1
if ((_G.type(o) == "function") and not ((function()
local _hx_2
if (_G.type(o) ~= "table") then
_hx_2 = false; else
_hx_2 = o.__name__; end
return _hx_2
end )() or (function()
local _hx_3
if (_G.type(o) ~= "table") then
_hx_3 = false; else
_hx_3 = o.__ename__; end
return _hx_3
end )())) then
_hx_1 = false; elseif ((_G.type(o) == "string") and ((String.prototype[field] ~= nil) or (field == "length"))) then
2023-06-07 17:42:21 +02:00
_hx_1 = true; elseif (o.__fields__ ~= nil) then
_hx_1 = o.__fields__[field] ~= nil; else
_hx_1 = o[field] ~= nil; end
return _hx_1
end )()) then
do return String.prototype[k] end;
else
if (String.__oldindex ~= nil) then
if (_G.type(String.__oldindex) == "function") then
do return String.__oldindex(s, k) end;
else
if (_G.type(String.__oldindex) == "table") then
do return String.__oldindex[k] end;
end;
end;
do return nil end;
else
do return nil end;
end;
end;
end;
end
String.indexOfEmpty = function(s,startIndex)
local length = __lua_lib_luautf8_Utf8.len(s);
if (startIndex < 0) then
startIndex = length + startIndex;
if (startIndex < 0) then
startIndex = 0;
end;
end;
if (startIndex > length) then
do return length end;
else
do return startIndex end;
end;
end
String.fromCharCode = function(code)
do return __lua_lib_luautf8_Utf8.char(code) end;
end
String.prototype = _hx_e();
String.prototype.toUpperCase = function(self)
do return __lua_lib_luautf8_Utf8.upper(self) end
end
String.prototype.toLowerCase = function(self)
do return __lua_lib_luautf8_Utf8.lower(self) end
end
String.prototype.indexOf = function(self,str,startIndex)
if (startIndex == nil) then
startIndex = 1;
else
startIndex = startIndex + 1;
end;
if (str == "") then
do return String.indexOfEmpty(self, startIndex - 1) end;
end;
local r = __lua_lib_luautf8_Utf8.find(self, str, startIndex, true);
if ((r ~= nil) and (r > 0)) then
do return r - 1 end;
else
do return -1 end;
end;
end
String.prototype.lastIndexOf = function(self,str,startIndex)
local ret = -1;
if (startIndex == nil) then
startIndex = __lua_lib_luautf8_Utf8.len(self);
end;
while (true) do _hx_do_first_1 = false;
local p = String.prototype.indexOf(self, str, ret + 1);
2023-06-07 17:42:21 +02:00
if (((p == -1) or (p > startIndex)) or (p == ret)) then
break;
end;
ret = p;
end;
do return ret end
end
String.prototype.split = function(self,delimiter)
local idx = 1;
local ret = _hx_tab_array({}, 0);
while (idx ~= nil) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local newidx = 0;
if (__lua_lib_luautf8_Utf8.len(delimiter) > 0) then
newidx = __lua_lib_luautf8_Utf8.find(self, delimiter, idx, true);
else
if (idx >= __lua_lib_luautf8_Utf8.len(self)) then
newidx = nil;
else
newidx = idx + 1;
end;
end;
if (newidx ~= nil) then
local match = __lua_lib_luautf8_Utf8.sub(self, idx, newidx - 1);
ret:push(match);
idx = newidx + __lua_lib_luautf8_Utf8.len(delimiter);
else
ret:push(__lua_lib_luautf8_Utf8.sub(self, idx, __lua_lib_luautf8_Utf8.len(self)));
idx = nil;
end;
end;
do return ret end
end
String.prototype.toString = function(self)
do return self end
end
String.prototype.substring = function(self,startIndex,endIndex)
if (endIndex == nil) then
endIndex = __lua_lib_luautf8_Utf8.len(self);
end;
if (endIndex < 0) then
endIndex = 0;
end;
if (startIndex < 0) then
startIndex = 0;
end;
if (endIndex < startIndex) then
do return __lua_lib_luautf8_Utf8.sub(self, endIndex + 1, startIndex) end;
else
do return __lua_lib_luautf8_Utf8.sub(self, startIndex + 1, endIndex) end;
end;
end
String.prototype.charAt = function(self,index)
do return __lua_lib_luautf8_Utf8.sub(self, index + 1, index + 1) end
end
String.prototype.charCodeAt = function(self,index)
do return __lua_lib_luautf8_Utf8.byte(self, index + 1) end
end
String.prototype.substr = function(self,pos,len)
if ((len == nil) or (len > (pos + __lua_lib_luautf8_Utf8.len(self)))) then
len = __lua_lib_luautf8_Utf8.len(self);
else
if (len < 0) then
len = __lua_lib_luautf8_Utf8.len(self) + len;
end;
end;
if (pos < 0) then
pos = __lua_lib_luautf8_Utf8.len(self) + pos;
end;
if (pos < 0) then
pos = 0;
end;
do return __lua_lib_luautf8_Utf8.sub(self, pos + 1, pos + len) end
end
String.prototype.__class__ = String
Std.new = {}
Std.__name__ = true
Std.string = function(s)
do return _hx_tostring(s, 0) end;
end
Std.int = function(x)
if (not Math.isFinite(x) or Math.isNaN(x)) then
do return 0 end;
else
do return _hx_bit_clamp(x) end;
end;
end
Std.parseInt = function(x)
if (x == nil) then
do return nil end;
end;
local sign, numString = _G.string.match(x, "^%s*([%-+]?)0[xX]([%da-fA-F]*)");
if (numString ~= nil) then
if (sign == "-") then
do return -_G.tonumber(numString, 16) end;
2023-06-07 17:42:21 +02:00
else
do return _G.tonumber(numString, 16) end;
2023-06-07 17:42:21 +02:00
end;
end;
local intMatch = _G.string.match(x, "^%s*[%-+]?%d*");
if (intMatch == nil) then
do return nil end;
end;
do return _G.tonumber(intMatch) end;
2023-06-07 17:42:21 +02:00
end
Std.parseFloat = function(x)
if ((x == nil) or (x == "")) then
do return (0/0) end;
end;
local digitMatch = _G.string.match(x, "^%s*[%.%-+]?[0-9]%d*");
2023-06-07 17:42:21 +02:00
if (digitMatch == nil) then
do return (0/0) end;
end;
x = String.prototype.substr(x, __lua_lib_luautf8_Utf8.len(digitMatch));
2023-06-07 17:42:21 +02:00
local decimalMatch = _G.string.match(x, "^%.%d*");
if (decimalMatch == nil) then
decimalMatch = "";
end;
x = String.prototype.substr(x, __lua_lib_luautf8_Utf8.len(decimalMatch));
2023-06-07 17:42:21 +02:00
local eMatch = _G.string.match(x, "^[eE][+%-]?%d+");
if (eMatch == nil) then
eMatch = "";
end;
local result = _G.tonumber(Std.string(Std.string(digitMatch) .. Std.string(decimalMatch)) .. Std.string(eMatch));
if (result ~= nil) then
do return result end;
else
do return (0/0) end;
end;
end
2024-02-16 17:36:27 +01:00
StringBuf.new = function()
local self = _hx_new(StringBuf.prototype)
StringBuf.super(self)
return self
end
StringBuf.super = function(self)
self.b = ({});
self.length = 0;
end
StringBuf.__name__ = true
StringBuf.prototype = _hx_e();
StringBuf.prototype.__class__ = StringBuf
2023-06-07 17:42:21 +02:00
StringTools.new = {}
StringTools.__name__ = true
StringTools.urlDecode = function(s)
s = _G.string.gsub(s, "+", " ");
s = _G.string.gsub(s, "%%(%x%x)", function(h)
do return _G.string.char(_G.tonumber(h, 16)) end;
end);
s = _G.string.gsub(s, "\r\n", "\n");
do return s end;
end
StringTools.isSpace = function(s,pos)
if (((__lua_lib_luautf8_Utf8.len(s) == 0) or (pos < 0)) or (pos >= __lua_lib_luautf8_Utf8.len(s))) then
do return false end;
end;
local c = __lua_lib_luautf8_Utf8.byte(s, pos + 1);
if (not ((c > 8) and (c < 14))) then
do return c == 32 end;
else
do return true end;
end;
end
StringTools.ltrim = function(s)
local l = __lua_lib_luautf8_Utf8.len(s);
local r = 0;
while ((r < l) and StringTools.isSpace(s, r)) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
r = r + 1;
end;
if (r > 0) then
do return String.prototype.substr(s, r, l - r) end;
2023-06-07 17:42:21 +02:00
else
do return s end;
end;
end
StringTools.rtrim = function(s)
local l = __lua_lib_luautf8_Utf8.len(s);
local r = 0;
while ((r < l) and StringTools.isSpace(s, (l - r) - 1)) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
r = r + 1;
end;
if (r > 0) then
do return String.prototype.substr(s, 0, l - r) end;
2023-06-07 17:42:21 +02:00
else
do return s end;
end;
end
StringTools.trim = function(s)
do return StringTools.ltrim(StringTools.rtrim(s)) end;
end
2024-02-16 17:36:27 +01:00
StringTools.replace = function(s,sub,by)
do return String.prototype.split(s, sub):join(by) end;
2024-02-16 17:36:27 +01:00
end
2023-06-07 17:42:21 +02:00
__haxe_IMap.new = {}
__haxe_IMap.__name__ = true
__haxe_Exception.new = function(message,previous,native)
local self = _hx_new(__haxe_Exception.prototype)
__haxe_Exception.super(self,message,previous,native)
return self
end
__haxe_Exception.super = function(self,message,previous,native)
self.__skipStack = 0;
self.__exceptionMessage = message;
self.__previousException = previous;
if (native ~= nil) then
self.__nativeException = native;
self.__nativeStack = __haxe_NativeStackTrace.exceptionStack();
else
self.__nativeException = self;
self.__nativeStack = __haxe_NativeStackTrace.callStack();
self.__skipStack = 1;
end;
end
__haxe_Exception.__name__ = true
2024-02-16 17:36:27 +01:00
__haxe_Exception.caught = function(value)
if (__lua_Boot.__instanceof(value, __haxe_Exception)) then
do return value end;
else
do return __haxe_ValueException.new(value, nil, value) end;
end;
end
2023-06-07 17:42:21 +02:00
__haxe_Exception.thrown = function(value)
if (__lua_Boot.__instanceof(value, __haxe_Exception)) then
do return value:get_native() end;
else
local e = __haxe_ValueException.new(value);
e.__skipStack = e.__skipStack + 1;
do return e end;
end;
end
__haxe_Exception.prototype = _hx_e();
2024-02-16 17:36:27 +01:00
__haxe_Exception.prototype.unwrap = function(self)
do return self.__nativeException end
end
__haxe_Exception.prototype.toString = function(self)
do return self:get_message() end
end
__haxe_Exception.prototype.get_message = function(self)
do return self.__exceptionMessage end
end
2023-06-07 17:42:21 +02:00
__haxe_Exception.prototype.get_native = function(self)
do return self.__nativeException end
end
__haxe_Exception.prototype.__class__ = __haxe_Exception
__haxe_Exception.prototype.__properties__ = {get_native="get_native",get_message="get_message"}
2024-02-16 17:36:27 +01:00
2023-06-07 17:42:21 +02:00
__haxe_Log.new = {}
__haxe_Log.__name__ = true
__haxe_Log.formatOutput = function(v,infos)
local str = Std.string(v);
if (infos == nil) then
do return str end;
end;
local pstr = Std.string(Std.string(infos.fileName) .. Std.string(":")) .. Std.string(infos.lineNumber);
if (infos.customParams ~= nil) then
local _g = 0;
local _g1 = infos.customParams;
while (_g < _g1.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local v = _g1[_g];
_g = _g + 1;
str = Std.string(str) .. Std.string((Std.string(", ") .. Std.string(Std.string(v))));
end;
end;
do return Std.string(Std.string(pstr) .. Std.string(": ")) .. Std.string(str) end;
end
__haxe_Log.trace = function(v,infos)
local str = __haxe_Log.formatOutput(v, infos);
_hx_print(str);
end
__haxe_NativeStackTrace.new = {}
__haxe_NativeStackTrace.__name__ = true
__haxe_NativeStackTrace.saveStack = function(exception)
end
__haxe_NativeStackTrace.callStack = function()
local _g = debug.traceback();
if (_g == nil) then
do return _hx_tab_array({}, 0) end;
else
local s = _g;
do return String.prototype.split(s, "\n"):slice(3) end;
2023-06-07 17:42:21 +02:00
end;
end
__haxe_NativeStackTrace.exceptionStack = function()
do return _hx_tab_array({}, 0) end;
end
2024-02-16 17:36:27 +01:00
_hxClasses["haxe._Template.TemplateExpr"] = { __ename__ = true, __constructs__ = _hx_tab_array({[0]="OpVar","OpExpr","OpIf","OpStr","OpBlock","OpForeach","OpMacro"},7)}
__haxe__Template_TemplateExpr = _hxClasses["haxe._Template.TemplateExpr"];
__haxe__Template_TemplateExpr.OpVar = function(v) local _x = _hx_tab_array({[0]="OpVar",0,v,__enum__=__haxe__Template_TemplateExpr}, 3); return _x; end
__haxe__Template_TemplateExpr.OpExpr = function(expr) local _x = _hx_tab_array({[0]="OpExpr",1,expr,__enum__=__haxe__Template_TemplateExpr}, 3); return _x; end
__haxe__Template_TemplateExpr.OpIf = function(expr,eif,eelse) local _x = _hx_tab_array({[0]="OpIf",2,expr,eif,eelse,__enum__=__haxe__Template_TemplateExpr}, 5); return _x; end
__haxe__Template_TemplateExpr.OpStr = function(str) local _x = _hx_tab_array({[0]="OpStr",3,str,__enum__=__haxe__Template_TemplateExpr}, 3); return _x; end
__haxe__Template_TemplateExpr.OpBlock = function(l) local _x = _hx_tab_array({[0]="OpBlock",4,l,__enum__=__haxe__Template_TemplateExpr}, 3); return _x; end
__haxe__Template_TemplateExpr.OpForeach = function(expr,loop) local _x = _hx_tab_array({[0]="OpForeach",5,expr,loop,__enum__=__haxe__Template_TemplateExpr}, 4); return _x; end
__haxe__Template_TemplateExpr.OpMacro = function(name,params) local _x = _hx_tab_array({[0]="OpMacro",6,name,params,__enum__=__haxe__Template_TemplateExpr}, 4); return _x; end
2023-06-07 17:42:21 +02:00
__haxe_iterators_ArrayIterator.new = function(array)
local self = _hx_new(__haxe_iterators_ArrayIterator.prototype)
__haxe_iterators_ArrayIterator.super(self,array)
return self
end
__haxe_iterators_ArrayIterator.super = function(self,array)
self.current = 0;
self.array = array;
end
__haxe_iterators_ArrayIterator.__name__ = true
__haxe_iterators_ArrayIterator.prototype = _hx_e();
__haxe_iterators_ArrayIterator.prototype.hasNext = function(self)
do return self.current < self.array.length end
end
__haxe_iterators_ArrayIterator.prototype.next = function(self)
do return self.array[(function()
local _hx_obj = self;
local _hx_fld = 'current';
local _ = _hx_obj[_hx_fld];
_hx_obj[_hx_fld] = _hx_obj[_hx_fld] + 1;
return _;
end)()] end
end
__haxe_iterators_ArrayIterator.prototype.__class__ = __haxe_iterators_ArrayIterator
2024-02-16 17:36:27 +01:00
__haxe_Template.new = function(str)
local self = _hx_new(__haxe_Template.prototype)
__haxe_Template.super(self,str)
return self
end
__haxe_Template.super = function(self,str)
local tokens = self:parseTokens(str);
self.expr = self:parseBlock(tokens);
if (not tokens:isEmpty()) then
_G.error(__haxe_Exception.thrown(Std.string(Std.string("Unexpected '") .. Std.string(Std.string(tokens:first().s))) .. Std.string("'")),0);
end;
end
__haxe_Template.__name__ = true
__haxe_Template.prototype = _hx_e();
__haxe_Template.prototype.execute = function(self,context,macros)
self.macros = (function()
local _hx_1
if (macros == nil) then
_hx_1 = _hx_e(); else
_hx_1 = macros; end
return _hx_1
end )();
self.context = context;
self.stack = __haxe_ds_List.new();
self.buf = StringBuf.new();
self:run(self.expr);
do return _G.table.concat(self.buf.b) end
end
__haxe_Template.prototype.resolve = function(self,v)
if (v == "__current__") then
do return self.context end;
end;
if (Reflect.isObject(self.context)) then
local value = Reflect.getProperty(self.context, v);
local tmp;
if (value == nil) then
local o = self.context;
tmp = (function()
local _hx_1
if ((_G.type(o) == "function") and not ((function()
local _hx_2
if (_G.type(o) ~= "table") then
_hx_2 = false; else
_hx_2 = o.__name__; end
return _hx_2
end )() or (function()
local _hx_3
if (_G.type(o) ~= "table") then
_hx_3 = false; else
_hx_3 = o.__ename__; end
return _hx_3
end )())) then
_hx_1 = false; elseif ((_G.type(o) == "string") and ((String.prototype[v] ~= nil) or (v == "length"))) then
2024-02-16 17:36:27 +01:00
_hx_1 = true; elseif (o.__fields__ ~= nil) then
_hx_1 = o.__fields__[v] ~= nil; else
_hx_1 = o[v] ~= nil; end
return _hx_1
end )();
else
tmp = true;
end;
if (tmp) then
do return value end;
end;
end;
local _g_head = self.stack.h;
while (_g_head ~= nil) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
local val = _g_head.item;
_g_head = _g_head.next;
local ctx = val;
local value = Reflect.getProperty(ctx, v);
local tmp;
if (value == nil) then
local o = ctx;
tmp = (function()
local _hx_4
if ((_G.type(o) == "function") and not ((function()
local _hx_5
if (_G.type(o) ~= "table") then
_hx_5 = false; else
_hx_5 = o.__name__; end
return _hx_5
end )() or (function()
local _hx_6
if (_G.type(o) ~= "table") then
_hx_6 = false; else
_hx_6 = o.__ename__; end
return _hx_6
end )())) then
_hx_4 = false; elseif ((_G.type(o) == "string") and ((String.prototype[v] ~= nil) or (v == "length"))) then
_hx_4 = true; elseif (o.__fields__ ~= nil) then
_hx_4 = o.__fields__[v] ~= nil; else
_hx_4 = o[v] ~= nil; end
return _hx_4
2024-02-16 17:36:27 +01:00
end )();
else
tmp = true;
end;
if (tmp) then
do return value end;
end;
end;
do return Reflect.field(__haxe_Template.globals, v) end
end
__haxe_Template.prototype.parseTokens = function(self,data)
local tokens = __haxe_ds_List.new();
local _hx_continue_1 = false;
while (__haxe_Template.splitter:match(data)) do _hx_do_first_1 = false;
repeat
2024-02-16 17:36:27 +01:00
local p = __haxe_Template.splitter:matchedPos();
if (p.pos > 0) then
tokens:add(_hx_o({__fields__={p=true,s=true,l=true},p=String.prototype.substr(data, 0, p.pos),s=true,l=nil}));
2024-02-16 17:36:27 +01:00
end;
if (__lua_lib_luautf8_Utf8.byte(data, p.pos + 1) == 58) then
tokens:add(_hx_o({__fields__={p=true,s=true,l=true},p=String.prototype.substr(data, p.pos + 2, p.len - 4),s=false,l=nil}));
2024-02-16 17:36:27 +01:00
data = __haxe_Template.splitter:matchedRight();
break;
end;
local parp = p.pos + p.len;
local npar = 1;
local params = _hx_tab_array({}, 0);
local part = "";
while (true) do _hx_do_first_2 = false;
2024-02-16 17:36:27 +01:00
local c = __lua_lib_luautf8_Utf8.byte(data, parp + 1);
parp = parp + 1;
if (c == 40) then
npar = npar + 1;
else
if (c == 41) then
npar = npar - 1;
if (npar <= 0) then
break;
end;
else
if (c == nil) then
_G.error(__haxe_Exception.thrown("Unclosed macro parenthesis"),0);
end;
end;
end;
if ((c == 44) and (npar == 1)) then
params:push(part);
part = "";
else
part = Std.string(part) .. Std.string(__lua_lib_luautf8_Utf8.char(c));
end;
end;
params:push(part);
tokens:add(_hx_o({__fields__={p=true,s=true,l=true},p=__haxe_Template.splitter:matched(2),s=false,l=params}));
data = String.prototype.substr(data, parp, __lua_lib_luautf8_Utf8.len(data) - parp);until true
2024-02-16 17:36:27 +01:00
if _hx_continue_1 then
_hx_continue_1 = false;
break;
end;
end;
if (__lua_lib_luautf8_Utf8.len(data) > 0) then
tokens:add(_hx_o({__fields__={p=true,s=true,l=true},p=data,s=true,l=nil}));
end;
do return tokens end
end
__haxe_Template.prototype.parseBlock = function(self,tokens)
local l = __haxe_ds_List.new();
while (true) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
local t = tokens:first();
if (t == nil) then
break;
end;
if (not t.s and (((t.p == "end") or (t.p == "else")) or (String.prototype.substr(t.p, 0, 7) == "elseif "))) then
2024-02-16 17:36:27 +01:00
break;
end;
l:add(self:parse(tokens));
end;
if (l.length == 1) then
do return l:first() end;
end;
do return __haxe__Template_TemplateExpr.OpBlock(l) end
end
__haxe_Template.prototype.parse = function(self,tokens)
local t = tokens:pop();
local p = t.p;
if (t.s) then
do return __haxe__Template_TemplateExpr.OpStr(p) end;
end;
if (t.l ~= nil) then
local pe = __haxe_ds_List.new();
local _g = 0;
local _g1 = t.l;
while (_g < _g1.length) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
local p = _g1[_g];
_g = _g + 1;
pe:add(self:parseBlock(self:parseTokens(p)));
end;
do return __haxe__Template_TemplateExpr.OpMacro(p, pe) end;
end;
local kwdEnd = function(kwd)
local pos = -1;
local length = __lua_lib_luautf8_Utf8.len(kwd);
if (String.prototype.substr(p, 0, length) == kwd) then
2024-02-16 17:36:27 +01:00
pos = length;
local s = String.prototype.substr(p, length);
2024-02-16 17:36:27 +01:00
local _g_codes = __lua_lib_luautf8_Utf8.codes(s);
local _g_str = s;
local _hx_1_cp_position, _hx_1_cp_codepoint = _g_codes(_g_str, 0);
local _g_codepoint = _hx_1_cp_codepoint;
local _g_position = _hx_1_cp_position;
while (_g_codepoint ~= nil) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
local ret = _g_codepoint;
local _hx_2_cp_position, _hx_2_cp_codepoint = _g_codes(_g_str, _g_position);
_g_codepoint = _hx_2_cp_codepoint;
_g_position = _hx_2_cp_position;
local c = ret;
if (c == 32) then
pos = pos + 1;
else
break;
end;
end;
end;
do return pos end;
end;
local pos = kwdEnd("if");
if (pos > 0) then
p = String.prototype.substr(p, pos, __lua_lib_luautf8_Utf8.len(p) - pos);
2024-02-16 17:36:27 +01:00
local e = self:parseExpr(p);
local eif = self:parseBlock(tokens);
local t = tokens:first();
local eelse;
if (t == nil) then
_G.error(__haxe_Exception.thrown("Unclosed 'if'"),0);
end;
if (t.p == "end") then
tokens:pop();
eelse = nil;
else
if (t.p == "else") then
tokens:pop();
eelse = self:parseBlock(tokens);
t = tokens:pop();
if ((t == nil) or (t.p ~= "end")) then
_G.error(__haxe_Exception.thrown("Unclosed 'else'"),0);
end;
else
t.p = String.prototype.substr(t.p, 4, __lua_lib_luautf8_Utf8.len(t.p) - 4);
2024-02-16 17:36:27 +01:00
eelse = self:parse(tokens);
end;
end;
do return __haxe__Template_TemplateExpr.OpIf(e, eif, eelse) end;
end;
local pos = kwdEnd("foreach");
if (pos >= 0) then
p = String.prototype.substr(p, pos, __lua_lib_luautf8_Utf8.len(p) - pos);
2024-02-16 17:36:27 +01:00
local e = self:parseExpr(p);
local efor = self:parseBlock(tokens);
local t = tokens:pop();
if ((t == nil) or (t.p ~= "end")) then
_G.error(__haxe_Exception.thrown("Unclosed 'foreach'"),0);
end;
do return __haxe__Template_TemplateExpr.OpForeach(e, efor) end;
end;
if (__haxe_Template.expr_splitter:match(p)) then
do return __haxe__Template_TemplateExpr.OpExpr(self:parseExpr(p)) end;
end;
do return __haxe__Template_TemplateExpr.OpVar(p) end
end
__haxe_Template.prototype.parseExpr = function(self,data)
local l = __haxe_ds_List.new();
local expr = data;
while (__haxe_Template.expr_splitter:match(data)) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
local p = __haxe_Template.expr_splitter:matchedPos();
local k = p.pos + p.len;
if (p.pos ~= 0) then
l:add(_hx_o({__fields__={p=true,s=true},p=String.prototype.substr(data, 0, p.pos),s=true}));
2024-02-16 17:36:27 +01:00
end;
local p = __haxe_Template.expr_splitter:matched(0);
l:add(_hx_o({__fields__={p=true,s=true},p=p,s=String.prototype.indexOf(p, "\"") >= 0}));
2024-02-16 17:36:27 +01:00
data = __haxe_Template.expr_splitter:matchedRight();
end;
if (__lua_lib_luautf8_Utf8.len(data) ~= 0) then
local _g_offset = 0;
local _g_s = data;
while (_g_offset < __lua_lib_luautf8_Utf8.len(_g_s)) do _hx_do_first_1 = false;
local _g_key = _g_offset;
2024-02-16 17:36:27 +01:00
_g_offset = _g_offset + 1;
local _g_value = __lua_lib_luautf8_Utf8.byte(_g_s, (_g_offset - 1) + 1);
local i = _g_key;
local c = _g_value;
2024-02-16 17:36:27 +01:00
if (c ~= 32) then
l:add(_hx_o({__fields__={p=true,s=true},p=String.prototype.substr(data, i),s=true}));
2024-02-16 17:36:27 +01:00
break;
end;
end;
end;
local e;
local _hx_status, _hx_result = pcall(function()
e = self:makeExpr(l);
if (not l:isEmpty()) then
_G.error(__haxe_Exception.thrown(l:first().p),0);
end;
return _hx_pcall_default
end)
if not _hx_status and _hx_result == "_hx_pcall_break" then
elseif not _hx_status then
local _g = _hx_result;
local _g1 = __haxe_Exception.caught(_g):unwrap();
if (__lua_Boot.__instanceof(_g1, String)) then
local s = _g1;
_G.error(__haxe_Exception.thrown(Std.string(Std.string(Std.string("Unexpected '") .. Std.string(s)) .. Std.string("' in ")) .. Std.string(expr)),0);
else
_G.error(_g,0);
end;
elseif _hx_result ~= _hx_pcall_default then
return _hx_result
end;
do return function()
local _hx_status, _hx_result = pcall(function()
do return e() end;
return _hx_pcall_default
end)
if not _hx_status and _hx_result == "_hx_pcall_break" then
elseif not _hx_status then
local _g = _hx_result;
local exc = __haxe_Exception.caught(_g):unwrap();
_G.error(__haxe_Exception.thrown(Std.string(Std.string(Std.string("Error : ") .. Std.string(Std.string(exc))) .. Std.string(" in ")) .. Std.string(expr)),0);
elseif _hx_result ~= _hx_pcall_default then
return _hx_result
end;
end end
end
__haxe_Template.prototype.makeConst = function(self,v)
__haxe_Template.expr_trim:match(v);
v = __haxe_Template.expr_trim:matched(1);
if (__lua_lib_luautf8_Utf8.byte(v, 1) == 34) then
local str = String.prototype.substr(v, 1, __lua_lib_luautf8_Utf8.len(v) - 2);
2024-02-16 17:36:27 +01:00
do return function()
do return str end;
end end;
end;
if (__haxe_Template.expr_int:match(v)) then
local i = Std.parseInt(v);
do return function()
do return i end;
end end;
end;
if (__haxe_Template.expr_float:match(v)) then
local f = Std.parseFloat(v);
do return function()
do return f end;
end end;
end;
local me = self;
do return function()
do return me:resolve(v) end;
end end
end
__haxe_Template.prototype.makePath = function(self,e,l)
local p = l:first();
if ((p == nil) or (p.p ~= ".")) then
do return e end;
end;
l:pop();
local field = l:pop();
if ((field == nil) or not field.s) then
_G.error(__haxe_Exception.thrown(field.p),0);
end;
local f = field.p;
__haxe_Template.expr_trim:match(f);
f = __haxe_Template.expr_trim:matched(1);
do return self:makePath(function()
do return Reflect.field(e(), f) end;
end, l) end
end
__haxe_Template.prototype.makeExpr = function(self,l)
do return self:makePath(self:makeExpr2(l), l) end
end
__haxe_Template.prototype.skipSpaces = function(self,l)
local p = l:first();
while (p ~= nil) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
local s = p.p;
local _g_codes = __lua_lib_luautf8_Utf8.codes(s);
local _g_str = s;
local _hx_1_cp_position, _hx_1_cp_codepoint = _g_codes(_g_str, 0);
local _g_codepoint = _hx_1_cp_codepoint;
local _g_position = _hx_1_cp_position;
while (_g_codepoint ~= nil) do _hx_do_first_2 = false;
2024-02-16 17:36:27 +01:00
local ret = _g_codepoint;
local _hx_2_cp_position, _hx_2_cp_codepoint = _g_codes(_g_str, _g_position);
_g_codepoint = _hx_2_cp_codepoint;
_g_position = _hx_2_cp_position;
local c = ret;
if (c ~= 32) then
do return end;
end;
end;
l:pop();
p = l:first();
end;
end
__haxe_Template.prototype.makeExpr2 = function(self,l)
self:skipSpaces(l);
local p = l:pop();
self:skipSpaces(l);
if (p == nil) then
_G.error(__haxe_Exception.thrown("<eof>"),0);
end;
if (p.s) then
do return self:makeConst(p.p) end;
end;
local _g = p.p;
if (_g) == "!" then
local e = self:makeExpr(l);
do return function()
local v = e();
if (v ~= nil) then
do return v == false end;
else
do return true end;
end;
end end;
elseif (_g) == "(" then
self:skipSpaces(l);
local e1 = self:makeExpr(l);
self:skipSpaces(l);
local p = l:pop();
if ((p == nil) or p.s) then
_G.error(__haxe_Exception.thrown(p),0);
end;
if (p.p == ")") then
do return e1 end;
end;
self:skipSpaces(l);
local e2 = self:makeExpr(l);
self:skipSpaces(l);
local p2 = l:pop();
self:skipSpaces(l);
if ((p2 == nil) or (p2.p ~= ")")) then
_G.error(__haxe_Exception.thrown(p2),0);
end;
local _g = p.p;
if (_g) == "!=" then
do return function()
do return e1() ~= e2() end;
end end;
elseif (_g) == "&&" then
do return function()
do return e1() and e2() end;
end end;
elseif (_g) == "*" then
do return function()
do return e1() * e2() end;
end end;
elseif (_g) == "+" then
do return function()
do return _hx_dyn_add(e1(),e2()) end;
end end;
elseif (_g) == "-" then
do return function()
do return e1() - e2() end;
end end;
elseif (_g) == "/" then
do return function()
do return e1() / e2() end;
end end;
elseif (_g) == "<" then
do return function()
do return e1() < e2() end;
end end;
elseif (_g) == "<=" then
do return function()
do return e1() <= e2() end;
end end;
elseif (_g) == "==" then
do return function()
do return e1() == e2() end;
end end;
elseif (_g) == ">" then
do return function()
do return e1() > e2() end;
end end;
elseif (_g) == ">=" then
do return function()
do return e1() >= e2() end;
end end;
elseif (_g) == "||" then
do return function()
do return e1() or e2() end;
end end;else
_G.error(__haxe_Exception.thrown(Std.string("Unknown operation ") .. Std.string(p.p)),0); end;
elseif (_g) == "-" then
local e = self:makeExpr(l);
do return function()
do return -e() end;
end end; end;
_G.error(__haxe_Exception.thrown(p.p),0);
end
__haxe_Template.prototype.run = function(self,e)
local tmp = e[1];
if (tmp) == 0 then
local v = e[2];
local _this = self.buf;
local str = Std.string(self:resolve(v));
_G.table.insert(_this.b, str);
local _this = _this;
_this.length = _this.length + __lua_lib_luautf8_Utf8.len(str);
elseif (tmp) == 1 then
local e = e[2];
local _this = self.buf;
local str = Std.string(e());
_G.table.insert(_this.b, str);
local _this = _this;
_this.length = _this.length + __lua_lib_luautf8_Utf8.len(str);
elseif (tmp) == 2 then
local e1 = e[2];
local eif = e[3];
local eelse = e[4];
local v = e1();
if ((v == nil) or (v == false)) then
if (eelse ~= nil) then
self:run(eelse);
end;
else
self:run(eif);
end;
elseif (tmp) == 3 then
local str = e[2];
local _this = self.buf;
local str = Std.string(str);
_G.table.insert(_this.b, str);
local _this = _this;
_this.length = _this.length + __lua_lib_luautf8_Utf8.len(str);
elseif (tmp) == 4 then
local l = e[2];
local _g_head = l.h;
while (_g_head ~= nil) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
local val = _g_head.item;
_g_head = _g_head.next;
local e = val;
self:run(e);
end;
elseif (tmp) == 5 then
local e1 = e[2];
local loop = e[3];
local v = e1();
local _hx_status, _hx_result = pcall(function()
local x = v:iterator();
if (x.hasNext == nil) then
_G.error(__haxe_Exception.thrown(nil),0);
end;
v = x;
return _hx_pcall_default
end)
if not _hx_status and _hx_result == "_hx_pcall_break" then
elseif not _hx_status then
local _g = _hx_result;
local _hx_status, _hx_result = pcall(function()
if (v.hasNext == nil) then
_G.error(__haxe_Exception.thrown(nil),0);
end;
return _hx_pcall_default
end)
if not _hx_status and _hx_result == "_hx_pcall_break" then
elseif not _hx_status then
local _g = _hx_result;
_G.error(__haxe_Exception.thrown(Std.string("Cannot iter on ") .. Std.string(Std.string(v))),0);
elseif _hx_result ~= _hx_pcall_default then
return _hx_result
end;
elseif _hx_result ~= _hx_pcall_default then
return _hx_result
end;
self.stack:push(self.context);
local v = v;
local ctx = v;
while (ctx:hasNext()) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
local ctx = ctx:next();
self.context = ctx;
self:run(loop);
end;
self.context = self.stack:pop();
elseif (tmp) == 6 then
local m = e[2];
local params = e[3];
local v = Reflect.field(self.macros, m);
local pl = Array.new();
local old = self.buf;
pl:push(_hx_bind(self,self.resolve));
local _g_head = params.h;
while (_g_head ~= nil) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
local val = _g_head.item;
_g_head = _g_head.next;
local p = val;
if (p[1] == 0) then
local v = p[2];
pl:push(self:resolve(v));
else
self.buf = StringBuf.new();
self:run(p);
pl:push(_G.table.concat(self.buf.b));
end;
end;
self.buf = old;
local _hx_status, _hx_result = pcall(function()
local _this = self.buf;
local str = Std.string(Reflect.callMethod(self.macros,v,pl));
_G.table.insert(_this.b, str);
local _this = _this;
_this.length = _this.length + __lua_lib_luautf8_Utf8.len(str);
return _hx_pcall_default
end)
if not _hx_status and _hx_result == "_hx_pcall_break" then
elseif not _hx_status then
local _g = _hx_result;
local e = __haxe_Exception.caught(_g):unwrap();
local plstr;
local _hx_status, _hx_result = pcall(function()
plstr = pl:join(",");
return _hx_pcall_default
end)
if not _hx_status and _hx_result == "_hx_pcall_break" then
elseif not _hx_status then
local _g = _hx_result;
plstr = "???";
elseif _hx_result ~= _hx_pcall_default then
return _hx_result
end;
local msg = Std.string(Std.string(Std.string(Std.string(Std.string(Std.string("Macro call ") .. Std.string(m)) .. Std.string("(")) .. Std.string(plstr)) .. Std.string(") failed (")) .. Std.string(Std.string(e))) .. Std.string(")");
_G.error(__haxe_Exception.thrown(msg),0);
elseif _hx_result ~= _hx_pcall_default then
return _hx_result
end; end;
end
__haxe_Template.prototype.__class__ = __haxe_Template
__haxe_ValueException.new = function(value,previous,native)
local self = _hx_new(__haxe_ValueException.prototype)
__haxe_ValueException.super(self,value,previous,native)
return self
end
__haxe_ValueException.super = function(self,value,previous,native)
__haxe_Exception.super(self,(function()
local _hx_1
if (value == nil) then
_hx_1 = "null"; else
_hx_1 = Std.string(value); end
return _hx_1
end )(),previous,native);
2024-02-16 17:36:27 +01:00
self.value = value;
end
__haxe_ValueException.__name__ = true
__haxe_ValueException.prototype = _hx_e();
__haxe_ValueException.prototype.unwrap = function(self)
do return self.value end
end
__haxe_ValueException.prototype.__class__ = __haxe_ValueException
__haxe_ValueException.__super__ = __haxe_Exception
setmetatable(__haxe_ValueException.prototype,{__index=__haxe_Exception.prototype})
setmetatable(__haxe_ValueException.prototype.__properties__,{__index=__haxe_Exception.prototype.__properties__})
__haxe_ds_List.new = function()
local self = _hx_new(__haxe_ds_List.prototype)
__haxe_ds_List.super(self)
return self
end
__haxe_ds_List.super = function(self)
self.length = 0;
end
__haxe_ds_List.__name__ = true
__haxe_ds_List.prototype = _hx_e();
__haxe_ds_List.prototype.add = function(self,item)
local next = nil;
local x = __haxe_ds__List_ListNode.new(item, next);
if (self.h == nil) then
self.h = x;
else
self.q.next = x;
end;
self.q = x;
self.length = self.length + 1;
end
__haxe_ds_List.prototype.push = function(self,item)
local x = __haxe_ds__List_ListNode.new(item, self.h);
self.h = x;
if (self.q == nil) then
self.q = x;
end;
self.length = self.length + 1;
end
__haxe_ds_List.prototype.first = function(self)
if (self.h == nil) then
do return nil end;
else
do return self.h.item end;
end;
end
__haxe_ds_List.prototype.pop = function(self)
if (self.h == nil) then
do return nil end;
end;
local x = self.h.item;
self.h = self.h.next;
if (self.h == nil) then
self.q = nil;
end;
self.length = self.length - 1;
do return x end
end
__haxe_ds_List.prototype.isEmpty = function(self)
do return self.h == nil end
end
__haxe_ds_List.prototype.toString = function(self)
local s_b = ({});
local s_length = 0;
local first = true;
local l = self.h;
local str = "{";
_G.table.insert(s_b, str);
s_length = s_length + __lua_lib_luautf8_Utf8.len(str);
while (l ~= nil) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
if (first) then
first = false;
else
local str = ", ";
_G.table.insert(s_b, str);
s_length = s_length + __lua_lib_luautf8_Utf8.len(str);
end;
local str = Std.string(l.item);
_G.table.insert(s_b, str);
s_length = s_length + __lua_lib_luautf8_Utf8.len(str);
l = l.next;
end;
local str = "}";
_G.table.insert(s_b, str);
s_length = s_length + __lua_lib_luautf8_Utf8.len(str);
do return _G.table.concat(s_b) end
end
__haxe_ds_List.prototype.__class__ = __haxe_ds_List
__haxe_ds__List_ListNode.new = function(item,next)
local self = _hx_new(__haxe_ds__List_ListNode.prototype)
__haxe_ds__List_ListNode.super(self,item,next)
return self
end
__haxe_ds__List_ListNode.super = function(self,item,next)
self.item = item;
self.next = next;
end
__haxe_ds__List_ListNode.__name__ = true
__haxe_ds__List_ListNode.prototype = _hx_e();
__haxe_ds__List_ListNode.prototype.__class__ = __haxe_ds__List_ListNode
__haxe_ds_StringMap.new = {}
__haxe_ds_StringMap.__name__ = true
__haxe_ds_StringMap.__interfaces__ = {__haxe_IMap}
__haxe_exceptions_PosException.new = function(message,previous,pos)
local self = _hx_new(__haxe_exceptions_PosException.prototype)
__haxe_exceptions_PosException.super(self,message,previous,pos)
return self
end
__haxe_exceptions_PosException.super = function(self,message,previous,pos)
__haxe_Exception.super(self,message,previous);
if (pos == nil) then
self.posInfos = _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="(unknown)",lineNumber=0,className="(unknown)",methodName="(unknown)"});
else
self.posInfos = pos;
end;
end
__haxe_exceptions_PosException.__name__ = true
__haxe_exceptions_PosException.prototype = _hx_e();
__haxe_exceptions_PosException.prototype.toString = function(self)
do return Std.string(Std.string(Std.string(Std.string(Std.string(Std.string(Std.string(Std.string(Std.string("") .. Std.string(__haxe_Exception.prototype.toString(self))) .. Std.string(" in ")) .. Std.string(self.posInfos.className)) .. Std.string(".")) .. Std.string(self.posInfos.methodName)) .. Std.string(" at ")) .. Std.string(self.posInfos.fileName)) .. Std.string(":")) .. Std.string(self.posInfos.lineNumber) end
end
__haxe_exceptions_PosException.prototype.__class__ = __haxe_exceptions_PosException
__haxe_exceptions_PosException.__super__ = __haxe_Exception
setmetatable(__haxe_exceptions_PosException.prototype,{__index=__haxe_Exception.prototype})
setmetatable(__haxe_exceptions_PosException.prototype.__properties__,{__index=__haxe_Exception.prototype.__properties__})
__haxe_exceptions_NotImplementedException.new = function(message,previous,pos)
local self = _hx_new(__haxe_exceptions_NotImplementedException.prototype)
__haxe_exceptions_NotImplementedException.super(self,message,previous,pos)
return self
end
__haxe_exceptions_NotImplementedException.super = function(self,message,previous,pos)
if (message == nil) then
message = "Not implemented";
end;
__haxe_exceptions_PosException.super(self,message,previous,pos);
end
__haxe_exceptions_NotImplementedException.__name__ = true
__haxe_exceptions_NotImplementedException.prototype = _hx_e();
__haxe_exceptions_NotImplementedException.prototype.__class__ = __haxe_exceptions_NotImplementedException
__haxe_exceptions_NotImplementedException.__super__ = __haxe_exceptions_PosException
setmetatable(__haxe_exceptions_NotImplementedException.prototype,{__index=__haxe_exceptions_PosException.prototype})
setmetatable(__haxe_exceptions_NotImplementedException.prototype.__properties__,{__index=__haxe_exceptions_PosException.prototype.__properties__})
2023-06-07 17:42:21 +02:00
__haxe_iterators_ArrayKeyValueIterator.new = function(array)
local self = _hx_new(__haxe_iterators_ArrayKeyValueIterator.prototype)
__haxe_iterators_ArrayKeyValueIterator.super(self,array)
return self
end
__haxe_iterators_ArrayKeyValueIterator.super = function(self,array)
self.array = array;
end
__haxe_iterators_ArrayKeyValueIterator.__name__ = true
__haxe_iterators_ArrayKeyValueIterator.prototype = _hx_e();
__haxe_iterators_ArrayKeyValueIterator.prototype.__class__ = __haxe_iterators_ArrayKeyValueIterator
__lua_Boot.new = {}
__lua_Boot.__name__ = true
__lua_Boot.__instanceof = function(o,cl)
if (cl == nil) then
do return false end;
end;
local cl1 = cl;
if (cl1) == Array then
do return __lua_Boot.isArray(o) end;
elseif (cl1) == Bool then
do return _G.type(o) == "boolean" end;
elseif (cl1) == Dynamic then
do return o ~= nil end;
elseif (cl1) == Float then
do return _G.type(o) == "number" end;
elseif (cl1) == Int then
if (_G.type(o) == "number") then
do return _hx_bit_clamp(o) == o end;
else
do return false end;
end;
elseif (cl1) == String then
do return _G.type(o) == "string" end;
elseif (cl1) == _G.table then
do return _G.type(o) == "table" end;
elseif (cl1) == __lua_Thread then
do return _G.type(o) == "thread" end;
elseif (cl1) == __lua_UserData then
do return _G.type(o) == "userdata" end;else
if (((o ~= nil) and (_G.type(o) == "table")) and (_G.type(cl) == "table")) then
local tmp;
if (__lua_Boot.__instanceof(o, Array)) then
tmp = Array;
else
if (__lua_Boot.__instanceof(o, String)) then
tmp = String;
else
local cl = o.__class__;
tmp = (function()
local _hx_1
if (cl ~= nil) then
_hx_1 = cl; else
_hx_1 = nil; end
return _hx_1
end )();
end;
end;
if (__lua_Boot.extendsOrImplements(tmp, cl)) then
do return true end;
end;
if ((function()
local _hx_2
if (cl == Class) then
_hx_2 = o.__name__ ~= nil; else
_hx_2 = false; end
return _hx_2
end )()) then
do return true end;
end;
if ((function()
local _hx_3
if (cl == Enum) then
_hx_3 = o.__ename__ ~= nil; else
_hx_3 = false; end
return _hx_3
end )()) then
do return true end;
end;
do return o.__enum__ == cl end;
else
do return false end;
end; end;
end
__lua_Boot.isArray = function(o)
if (_G.type(o) == "table") then
if ((o.__enum__ == nil) and (_G.getmetatable(o) ~= nil)) then
do return _G.getmetatable(o).__index == Array.prototype end;
else
do return false end;
end;
else
do return false end;
end;
end
__lua_Boot.extendsOrImplements = function(cl1,cl2)
if ((cl1 == nil) or (cl2 == nil)) then
do return false end;
else
if (cl1 == cl2) then
do return true end;
else
if (cl1.__interfaces__ ~= nil) then
local intf = cl1.__interfaces__;
local _g = 1;
local _g1 = _hx_table.maxn(intf) + 1;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
if (__lua_Boot.extendsOrImplements(intf[i], cl2)) then
do return true end;
end;
end;
end;
end;
end;
do return __lua_Boot.extendsOrImplements(cl1.__super__, cl2) end;
end
__lua_UserData.new = {}
__lua_UserData.__name__ = true
__lua_Lib.new = {}
__lua_Lib.__name__ = true
__lua_Lib.fillArray = function(itr)
local i = nil;
local ret = _hx_tab_array({}, 0);
while (true) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
i = itr();
if (not (i ~= nil)) then
break;
end;
ret:push(i);
end;
do return ret end;
end
__lua_Thread.new = {}
__lua_Thread.__name__ = true
2023-11-28 17:39:33 +01:00
__xrfragment_Filter.new = function(str)
local self = _hx_new(__xrfragment_Filter.prototype)
__xrfragment_Filter.super(self,str)
2023-06-07 17:42:21 +02:00
return self
end
2023-11-28 17:39:33 +01:00
__xrfragment_Filter.super = function(self,str)
2023-06-07 17:42:21 +02:00
self.q = _hx_e();
self.str = "";
if (str ~= nil) then
self:parse(str);
end;
end
2023-11-28 17:39:33 +01:00
_hx_exports["xrfragment"]["Filter"] = __xrfragment_Filter
__xrfragment_Filter.__name__ = true
__xrfragment_Filter.prototype = _hx_e();
__xrfragment_Filter.prototype.toObject = function(self)
do return Reflect.copy(self.q) end
2023-06-07 17:42:21 +02:00
end
2023-11-28 17:39:33 +01:00
__xrfragment_Filter.prototype.get = function(self)
do return Reflect.copy(self.q) end
2023-06-07 17:42:21 +02:00
end
2023-11-28 17:39:33 +01:00
__xrfragment_Filter.prototype.parse = function(self,str)
local token = String.prototype.split(str, " ");
2023-06-07 17:42:21 +02:00
local q = _hx_e();
local process = function(str,prefix)
if (prefix == nil) then
prefix = "";
end;
str = StringTools.trim(str);
local k = String.prototype.split(str, "=")[0];
local v = String.prototype.split(str, "=")[1];
2023-06-07 17:42:21 +02:00
local filter = _hx_e();
if (Reflect.field(q, Std.string(prefix) .. Std.string(k))) then
filter = Reflect.field(q, Std.string(prefix) .. Std.string(k));
end;
2023-11-28 17:39:33 +01:00
if (__xrfragment_XRF.isProp:match(str)) then
2023-06-07 17:42:21 +02:00
local oper = "";
if (String.prototype.indexOf(str, ">") ~= -1) then
2023-06-07 17:42:21 +02:00
oper = ">";
end;
if (String.prototype.indexOf(str, "<") ~= -1) then
2023-06-07 17:42:21 +02:00
oper = "<";
end;
2023-11-28 17:39:33 +01:00
if (__xrfragment_XRF.isExclude:match(k)) then
k = String.prototype.substr(k, 1);
2023-11-28 17:39:33 +01:00
end;
v = String.prototype.substr(v, __lua_lib_luautf8_Utf8.len(oper));
2023-06-07 17:42:21 +02:00
if (__lua_lib_luautf8_Utf8.len(oper) == 0) then
oper = "=";
end;
local rule = _hx_e();
2023-11-28 17:39:33 +01:00
if (__xrfragment_XRF.isNumber:match(v)) then
local value = Std.parseFloat(v);
rule[oper] = value;
2023-06-07 17:42:21 +02:00
else
rule[oper] = v;
2023-06-07 17:42:21 +02:00
end;
2023-11-28 17:39:33 +01:00
q.expr = rule;
end;
local value = (function()
local _hx_1
if (__xrfragment_XRF.isDeep:match(str)) then
_hx_1 = String.prototype.split(k, "*").length - 1; else
_hx_1 = 0; end
return _hx_1
end )();
2023-11-28 17:39:33 +01:00
q.deep = value;
local value = (function()
local _hx_2
2023-11-28 17:39:33 +01:00
if (__xrfragment_XRF.isExclude:match(str)) then
_hx_2 = false; else
_hx_2 = true; end
return _hx_2
2023-11-28 17:39:33 +01:00
end )();
q.show = value;
local value = __xrfragment_XRF.operators:replace(k, "");
q.key = value;
q.value = v;
2023-06-07 17:42:21 +02:00
end;
local _g = 0;
local _g1 = token.length;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
process(token[i]);
2023-06-07 17:42:21 +02:00
end;
self.q = q do return self.q end
end
2023-11-28 17:39:33 +01:00
__xrfragment_Filter.prototype.test = function(self,obj)
2023-06-07 17:42:21 +02:00
local qualify = false;
local _g = 0;
local _g1 = Reflect.fields(obj);
while (_g < _g1.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local k = _g1[_g];
_g = _g + 1;
local v = Std.string(Reflect.field(obj, k));
if (self:testProperty(k, v)) then
qualify = true;
end;
end;
local _g = 0;
local _g1 = Reflect.fields(obj);
while (_g < _g1.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local k = _g1[_g];
_g = _g + 1;
local v = Std.string(Reflect.field(obj, k));
if (self:testProperty(k, v, true)) then
qualify = false;
end;
end;
do return qualify end
end
2023-11-28 17:39:33 +01:00
__xrfragment_Filter.prototype.testProperty = function(self,property,value,exclude)
2023-06-07 17:42:21 +02:00
local conds = 0;
local fails = 0;
local qualify = 0;
local testprop = function(expr)
conds = conds + 1;
fails = fails + (function()
local _hx_1
if (expr) then
_hx_1 = 0; else
_hx_1 = 1; end
return _hx_1
end )();
do return expr end;
end;
if (Reflect.field(self.q, value) ~= nil) then
local v = Reflect.field(self.q, value);
if (Reflect.field(v, property) ~= nil) then
do return Reflect.field(v, property) end;
end;
end;
2023-11-28 17:39:33 +01:00
if (Reflect.field(self.q, "expr")) then
local f = Reflect.field(self.q, "expr");
if (not Reflect.field(self.q, "show")) then
if (((Reflect.field(f, "!=") ~= nil) and testprop(Std.string(value) == Std.string(Reflect.field(f, "!=")))) and exclude) then
qualify = qualify + 1;
end;
else
if ((Reflect.field(f, "*") ~= nil) and testprop(Std.parseFloat(value) ~= nil)) then
qualify = qualify + 1;
end;
if ((Reflect.field(f, ">") ~= nil) and testprop(Std.parseFloat(value) >= Std.parseFloat(Reflect.field(f, ">")))) then
qualify = qualify + 1;
end;
if ((Reflect.field(f, "<") ~= nil) and testprop(Std.parseFloat(value) <= Std.parseFloat(Reflect.field(f, "<")))) then
qualify = qualify + 1;
end;
if ((Reflect.field(f, "=") ~= nil) and (testprop(value == Reflect.field(f, "=")) or testprop(Std.parseFloat(value) == Std.parseFloat(Reflect.field(f, "="))))) then
qualify = qualify + 1;
2023-06-07 17:42:21 +02:00
end;
end;
end;
do return qualify > 0 end
end
2023-11-28 17:39:33 +01:00
__xrfragment_Filter.prototype.__class__ = __xrfragment_Filter
__xrfragment_Parser.new = {}
_hx_exports["xrfragment"]["Parser"] = __xrfragment_Parser
__xrfragment_Parser.__name__ = true
__xrfragment_Parser.parse = function(key,value,store,index)
local Frag_h = ({});
2024-02-16 17:36:27 +01:00
local value1 = _hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_PREDEFINED_VIEW),__xrfragment_XRF.PV_EXECUTE);
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
Frag_h["#"] = __haxe_ds_StringMap.tnull;
else
Frag_h["#"] = value1;
end;
2024-02-16 17:36:27 +01:00
local value1 = __xrfragment_XRF.T_URL;
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
Frag_h.src = __haxe_ds_StringMap.tnull;
else
Frag_h.src = value1;
end;
2024-02-16 17:36:27 +01:00
local value1 = _hx_bit.bor(__xrfragment_XRF.T_URL,__xrfragment_XRF.T_PREDEFINED_VIEW);
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
Frag_h.href = __haxe_ds_StringMap.tnull;
else
Frag_h.href = value1;
end;
2024-02-16 17:36:27 +01:00
local value1 = _hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_STRING);
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
Frag_h.tag = __haxe_ds_StringMap.tnull;
else
Frag_h.tag = value1;
end;
2024-02-16 17:36:27 +01:00
local value1 = _hx_bit.bor(_hx_bit.bor(_hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.PV_OVERRIDE,__xrfragment_XRF.T_VECTOR3),__xrfragment_XRF.T_STRING),__xrfragment_XRF.METADATA),__xrfragment_XRF.NAVIGATOR);
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
Frag_h.pos = __haxe_ds_StringMap.tnull;
else
Frag_h.pos = value1;
end;
local value1 = _hx_bit.bor(_hx_bit.bor(_hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.QUERY_OPERATOR,__xrfragment_XRF.PV_OVERRIDE),__xrfragment_XRF.T_VECTOR3),__xrfragment_XRF.METADATA),__xrfragment_XRF.NAVIGATOR);
if (value1 == nil) then
Frag_h.rot = __haxe_ds_StringMap.tnull;
else
Frag_h.rot = value1;
end;
2024-02-16 17:36:27 +01:00
local value1 = _hx_bit.bor(_hx_bit.bor(_hx_bit.bor(_hx_bit.bor(__xrfragment_XRF.PV_OVERRIDE,__xrfragment_XRF.T_FLOAT),__xrfragment_XRF.T_VECTOR2),__xrfragment_XRF.NAVIGATOR),__xrfragment_XRF.METADATA);
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
Frag_h.t = __haxe_ds_StringMap.tnull;
else
Frag_h.t = value1;
end;
2024-02-16 17:36:27 +01:00
local value1 = _hx_bit.bor(__xrfragment_XRF.PV_OVERRIDE,__xrfragment_XRF.T_MEDIAFRAG);
if (value1 == nil) then
Frag_h.s = __haxe_ds_StringMap.tnull;
else
Frag_h.s = value1;
end;
2024-03-19 11:06:08 +01:00
local value1 = _hx_bit.bor(__xrfragment_XRF.PV_OVERRIDE,__xrfragment_XRF.T_PREDEFINED_VIEW);
2024-02-16 17:36:27 +01:00
if (value1 == nil) then
Frag_h.loop = __haxe_ds_StringMap.tnull;
else
Frag_h.loop = value1;
end;
local value1 = _hx_bit.bor(__xrfragment_XRF.T_VECTOR2,__xrfragment_XRF.T_MEDIAFRAG);
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
2024-02-16 17:36:27 +01:00
Frag_h.uv = __haxe_ds_StringMap.tnull;
2023-11-28 17:39:33 +01:00
else
2024-02-16 17:36:27 +01:00
Frag_h.uv = value1;
2023-11-28 17:39:33 +01:00
end;
2024-02-16 17:36:27 +01:00
local value1 = _hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_STRING);
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
Frag_h.namespace = __haxe_ds_StringMap.tnull;
else
Frag_h.namespace = value1;
end;
2024-02-16 17:36:27 +01:00
local value1 = _hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_STRING);
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
Frag_h.SPDX = __haxe_ds_StringMap.tnull;
else
Frag_h.SPDX = value1;
end;
2024-02-16 17:36:27 +01:00
local value1 = _hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_STRING);
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
Frag_h.unit = __haxe_ds_StringMap.tnull;
else
Frag_h.unit = value1;
end;
2024-02-16 17:36:27 +01:00
local value1 = _hx_bit.bor(__xrfragment_XRF.IMMUTABLE,__xrfragment_XRF.T_STRING);
2023-11-28 17:39:33 +01:00
if (value1 == nil) then
Frag_h.description = __haxe_ds_StringMap.tnull;
else
Frag_h.description = value1;
end;
local keyStripped = __xrfragment_XRF.operators:replace(key, "");
local isPVDynamic = (__lua_lib_luautf8_Utf8.len(key) > 0) and (Frag_h[key] == nil);
if (isPVDynamic) then
local v = __xrfragment_XRF.new(key, _hx_bit.bor(__xrfragment_XRF.PV_EXECUTE,__xrfragment_XRF.NAVIGATOR), index);
v:validate(value);
2024-02-16 17:36:27 +01:00
v.flags = __xrfragment_XRF.set(__xrfragment_XRF.T_DYNAMICKEY, v.flags);
if (Frag_h[key] == nil) then
v.flags = __xrfragment_XRF.set(__xrfragment_XRF.CUSTOMFRAG, v.flags);
end;
if (__lua_lib_luautf8_Utf8.len(value) == 0) then
v.flags = __xrfragment_XRF.set(__xrfragment_XRF.T_DYNAMICKEYVALUE, v.flags);
end;
2023-11-28 17:39:33 +01:00
store[keyStripped] = v;
do return true end;
end;
local ret = Frag_h[key];
local v = __xrfragment_XRF.new(key, (function()
local _hx_1
if (ret == __haxe_ds_StringMap.tnull) then
_hx_1 = nil; else
_hx_1 = ret; end
return _hx_1
end )(), index);
2023-11-28 17:39:33 +01:00
if (Frag_h[key] ~= nil) then
if (not v:validate(value)) then
2024-02-16 17:36:27 +01:00
__haxe_Log.trace(Std.string(Std.string(Std.string(Std.string("⚠ fragment '") .. Std.string(key)) .. Std.string("' has incompatible value (")) .. Std.string(value)) .. Std.string(")"), _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="src/xrfragment/Parser.hx",lineNumber=67,className="xrfragment.Parser",methodName="parse"}));
2023-11-28 17:39:33 +01:00
do return false end;
end;
store[keyStripped] = v;
if (__xrfragment_Parser.debug) then
2024-02-16 17:36:27 +01:00
__haxe_Log.trace(Std.string(Std.string(Std.string("") .. Std.string(key)) .. Std.string(": ")) .. Std.string(v.string), _hx_o({__fields__={fileName=true,lineNumber=true,className=true,methodName=true},fileName="src/xrfragment/Parser.hx",lineNumber=71,className="xrfragment.Parser",methodName="parse"}));
2023-11-28 17:39:33 +01:00
end;
else
if (__lua_Boot.__instanceof(value, String)) then
v:guessType(v, value);
end;
2024-02-16 17:36:27 +01:00
v.flags = __xrfragment_XRF.set(__xrfragment_XRF.CUSTOMFRAG, v.flags);
2023-11-28 17:39:33 +01:00
store[keyStripped] = v;
end;
do return true end;
end
__xrfragment_Parser.getMetaData = function()
local meta = _hx_o({__fields__={title=true,description=true,author=true,publisher=true,website=true,license=true},title=_hx_tab_array({[0]="title", "og:title", "dc.title"}, 3),description=_hx_tab_array({[0]="aria-description", "og:description", "dc.description"}, 3),author=_hx_tab_array({[0]="author", "dc.creator"}, 2),publisher=_hx_tab_array({[0]="publisher", "dc.publisher"}, 2),website=_hx_tab_array({[0]="og:site_name", "og:url", "dc.publisher"}, 3),license=_hx_tab_array({[0]="SPDX", "dc.rights"}, 2)});
do return meta end;
end
2023-06-07 17:42:21 +02:00
2024-04-16 15:19:08 +02:00
__xrfragment_URI.new = function()
local self = _hx_new(__xrfragment_URI.prototype)
__xrfragment_URI.super(self)
return self
end
__xrfragment_URI.super = function(self)
self.XRF = _hx_e();
self.hash = _hx_e();
self.fragment = "";
end
2023-06-07 17:42:21 +02:00
_hx_exports["xrfragment"]["URI"] = __xrfragment_URI
__xrfragment_URI.__name__ = true
2024-04-16 15:19:08 +02:00
__xrfragment_URI.parseFragment = function(url,filter)
2023-06-07 17:42:21 +02:00
local store = _hx_e();
if ((url == nil) or (String.prototype.indexOf(url, "#") == -1)) then
2023-06-07 17:42:21 +02:00
do return store end;
end;
local fragment = String.prototype.split(url, "#");
local splitArray = String.prototype.split(fragment[1], "&");
2023-06-07 17:42:21 +02:00
local _g = 0;
local _g1 = splitArray.length;
while (_g < _g1) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
_g = _g + 1;
local i = _g - 1;
local splitByEqual = String.prototype.split(splitArray[i], "=");
2023-06-07 17:42:21 +02:00
local regexPlus = EReg.new("\\+", "g");
local key = splitByEqual[0];
local value = "";
if (splitByEqual.length > 1) then
2024-02-16 17:36:27 +01:00
if (__xrfragment_XRF.isVector:match(splitByEqual[1])) then
value = splitByEqual[1];
else
value = StringTools.urlDecode(regexPlus:split(splitByEqual[1]):join(" "));
end;
2023-06-07 17:42:21 +02:00
end;
2023-11-28 17:39:33 +01:00
local ok = __xrfragment_Parser.parse(key, value, store, i);
2023-06-07 17:42:21 +02:00
end;
if ((filter ~= nil) and (filter ~= 0)) then
local _g = 0;
local _g1 = Reflect.fields(store);
while (_g < _g1.length) do _hx_do_first_1 = false;
2023-06-07 17:42:21 +02:00
local key = _g1[_g];
_g = _g + 1;
local xrf = Reflect.field(store, key);
if (not xrf:is(filter)) then
Reflect.deleteField(store, key);
end;
end;
end;
do return store end;
end
2024-02-16 17:36:27 +01:00
__xrfragment_URI.template = function(uri,vars)
local parts = String.prototype.split(uri, "#");
2024-02-16 17:36:27 +01:00
if (parts.length == 1) then
do return uri end;
end;
local frag = parts[1];
frag = StringTools.replace(frag, "{", "::");
frag = StringTools.replace(frag, "}", "::");
frag = __haxe_Template.new(frag):execute(vars);
frag = StringTools.replace(frag, "null", "");
parts[1] = frag;
do return parts:join("#") end;
end
2024-04-16 15:19:08 +02:00
__xrfragment_URI.parse = function(stringUrl,flags)
local r = EReg.new("^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?://)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)", "");
2024-07-17 13:07:35 +02:00
if (((String.prototype.indexOf(stringUrl, "://") == -1) and (__lua_lib_luautf8_Utf8.sub(stringUrl, 1, 1) ~= "/")) and (__lua_lib_luautf8_Utf8.sub(stringUrl, 1, 1) ~= "#")) then
2024-04-16 15:19:08 +02:00
stringUrl = Std.string("/") .. Std.string(stringUrl);
end;
r:match(stringUrl);
local url = __xrfragment_URI.new();
local _g = 0;
local _g1 = __xrfragment_URI._parts.length;
while (_g < _g1) do _hx_do_first_1 = false;
2024-04-16 15:19:08 +02:00
_g = _g + 1;
local i = _g - 1;
url[__xrfragment_URI._parts[i]] = r:matched(i);
end;
if (__xrfragment_URI.isRelative(url) == true) then
if ((url.directory == nil) and (url.host ~= nil)) then
url.file = url.host;
end;
2024-04-16 18:44:55 +02:00
url.host = "";
2024-04-16 15:19:08 +02:00
end;
url.hash = _hx_e();
if ((url.fragment ~= nil) and (__lua_lib_luautf8_Utf8.len(url.fragment) > 0)) then
url.XRF = __xrfragment_URI.parseFragment(Std.string("#") .. Std.string(url.fragment), flags);
local key;
local _g = 0;
local _g1 = Reflect.fields(url.XRF);
while (_g < _g1.length) do _hx_do_first_1 = false;
2024-04-16 15:19:08 +02:00
local key = _g1[_g];
_g = _g + 1;
local v = Reflect.field(url.XRF, key);
local this1 = url.hash;
local value = Reflect.field(v, "string");
this1[key] = value;
end;
end;
__xrfragment_URI.computeVars(url);
do return url end;
end
__xrfragment_URI.computeVars = function(url)
local r = EReg.new("//", "g");
if ((url.directory ~= nil) and (String.prototype.indexOf(url.directory, "//") ~= -1)) then
2024-04-16 15:19:08 +02:00
url.directory = r:replace(url.directory, "/");
end;
if ((url.path ~= nil) and (String.prototype.indexOf(url.path, "//") ~= -1)) then
2024-04-16 15:19:08 +02:00
url.path = r:replace(url.path, "/");
end;
if ((url.file ~= nil) and (String.prototype.indexOf(url.file, "//") ~= -1)) then
2024-04-16 15:19:08 +02:00
url.file = r:replace(url.file, "/");
end;
url.URN = Std.string(Std.string(url.scheme) .. Std.string("://")) .. Std.string(url.host);
if (url.port ~= nil) then
local url1 = url;
url1.URN = Std.string(url1.URN) .. Std.string((Std.string(":") .. Std.string(url.port)));
end;
local url1 = url;
url1.URN = Std.string(url1.URN) .. Std.string(url.directory);
if (url.file ~= nil) then
local parts = String.prototype.split(url.file, ".");
2024-04-16 15:19:08 +02:00
if (parts.length > 1) then
url.fileExt = parts:pop();
end;
end;
end
__xrfragment_URI.toString = function(url)
local result = "";
if (url.scheme ~= nil) then
result = Std.string(result) .. Std.string((Std.string(url.scheme) .. Std.string("://")));
end;
if (url.user ~= nil) then
result = Std.string(result) .. Std.string((Std.string(url.user) .. Std.string(":")));
end;
if (url.password ~= nil) then
result = Std.string(result) .. Std.string((Std.string(url.password) .. Std.string("@")));
end;
if (url.host ~= nil) then
result = Std.string(result) .. Std.string(url.host);
end;
if (url.port ~= nil) then
result = Std.string(result) .. Std.string((Std.string(":") .. Std.string(url.port)));
end;
if (url.directory ~= nil) then
result = Std.string(result) .. Std.string(url.directory);
end;
if (url.file ~= nil) then
result = Std.string(result) .. Std.string(url.file);
end;
if (url.query ~= nil) then
result = Std.string(result) .. Std.string((Std.string("?") .. Std.string(url.query)));
end;
if (url.fragment ~= nil) then
result = Std.string(result) .. Std.string((Std.string("#") .. Std.string(url.fragment)));
end;
do return result end;
end
__xrfragment_URI.appendURI = function(url,appendedURI)
if (__xrfragment_URI.isRelative(url) == true) then
do return __xrfragment_URI.appendToRelativeURI(url, appendedURI) end;
else
do return __xrfragment_URI.appendToAbsoluteURI(url, appendedURI) end;
end;
end
__xrfragment_URI.isRelative = function(url)
do return url.scheme == nil end;
end
__xrfragment_URI.appendToRelativeURI = function(url,appendedURI)
if ((url.directory == nil) or (url.host == nil)) then
do return __xrfragment_URI.cloneURI(appendedURI) end;
end;
local resultURI = __xrfragment_URI.new();
resultURI.host = url.host;
resultURI.directory = url.directory;
if (appendedURI.host ~= nil) then
local resultURI = resultURI;
resultURI.directory = Std.string(resultURI.directory) .. Std.string(appendedURI.host);
end;
if (appendedURI.directory ~= nil) then
local directory = appendedURI.directory;
if (appendedURI.host == nil) then
local resultURI = resultURI;
resultURI.directory = Std.string(resultURI.directory) .. Std.string(String.prototype.substr(directory, 1));
2024-04-16 15:19:08 +02:00
else
local resultURI = resultURI;
resultURI.directory = Std.string(resultURI.directory) .. Std.string(directory);
end;
end;
if (appendedURI.file ~= nil) then
resultURI.file = appendedURI.file;
end;
resultURI.path = Std.string(resultURI.directory) .. Std.string(resultURI.file);
if (appendedURI.query ~= nil) then
resultURI.query = appendedURI.query;
end;
if (appendedURI.fragment ~= nil) then
resultURI.fragment = appendedURI.fragment;
end;
do return resultURI end;
end
__xrfragment_URI.appendToAbsoluteURI = function(url,appendedURI)
local resultURI = __xrfragment_URI.new();
if (url.scheme ~= nil) then
resultURI.scheme = url.scheme;
end;
if (url.host ~= nil) then
resultURI.host = url.host;
end;
local directory = "";
if (url.directory ~= nil) then
directory = url.directory;
end;
if (appendedURI.host ~= nil) then
local appendedURI1 = appendedURI;
appendedURI1.directory = Std.string(appendedURI1.directory) .. Std.string(appendedURI.host);
end;
if (appendedURI.directory ~= nil) then
directory = Std.string(directory) .. Std.string(appendedURI.directory);
end;
resultURI.directory = directory;
if (appendedURI.file ~= nil) then
resultURI.file = appendedURI.file;
end;
resultURI.path = Std.string(resultURI.directory) .. Std.string(resultURI.file);
if (appendedURI.query ~= nil) then
resultURI.query = appendedURI.query;
end;
if (appendedURI.fragment ~= nil) then
resultURI.fragment = appendedURI.fragment;
end;
do return resultURI end;
end
__xrfragment_URI.toAbsolute = function(url,newUrl)
local newURI = __xrfragment_URI.parse(newUrl, 0);
local resultURI = __xrfragment_URI.new();
resultURI.port = url.port;
resultURI.source = newUrl;
if (newURI.scheme ~= nil) then
resultURI.scheme = newURI.scheme;
else
resultURI.scheme = url.scheme;
end;
if ((newURI.host ~= nil) and (__lua_lib_luautf8_Utf8.len(newURI.host) > 0)) then
resultURI.host = newURI.host;
resultURI.port = nil;
resultURI.fragment = nil;
resultURI.hash = _hx_e();
resultURI.XRF = _hx_e();
if (newURI.port ~= nil) then
resultURI.port = newURI.port;
end;
else
resultURI.host = url.host;
end;
local directory = "";
if (url.directory ~= nil) then
directory = url.directory;
end;
2024-07-17 13:07:35 +02:00
if (((newURI.directory ~= nil) and (__lua_lib_luautf8_Utf8.sub(newURI.source, 1, 1) ~= "#")) and (__lua_lib_luautf8_Utf8.len(newURI.directory) > 0)) then
if ((__lua_lib_luautf8_Utf8.sub(newUrl, 1, 1) ~= "/") and (String.prototype.indexOf(newUrl, "://") == -1)) then
local stripRelative = EReg.new("\\./.*", "");
directory = stripRelative:replace(directory, "");
2024-04-16 15:19:08 +02:00
directory = Std.string(directory) .. Std.string(newURI.directory);
else
directory = newURI.directory;
end;
end;
resultURI.directory = directory;
2024-07-17 13:07:35 +02:00
if ((newURI.file ~= nil) and (__lua_lib_luautf8_Utf8.len(newURI.file) > 0)) then
2024-04-16 15:19:08 +02:00
resultURI.file = newURI.file;
2024-04-16 18:44:55 +02:00
else
resultURI.file = url.file;
2024-04-16 15:19:08 +02:00
end;
resultURI.path = Std.string(resultURI.directory) .. Std.string(resultURI.file);
if (newURI.query ~= nil) then
resultURI.query = newURI.query;
end;
if (newURI.fragment ~= nil) then
resultURI.fragment = newURI.fragment;
end;
resultURI.hash = newURI.hash;
resultURI.XRF = newURI.XRF;
__xrfragment_URI.computeVars(resultURI);
do return resultURI end;
end
__xrfragment_URI.cloneURI = function(url)
local clonedURI = __xrfragment_URI.new();
clonedURI.url = url.url;
clonedURI.source = url.source;
clonedURI.scheme = url.scheme;
clonedURI.authority = url.authority;
clonedURI.userInfo = url.userInfo;
clonedURI.password = url.password;
clonedURI.host = url.host;
clonedURI.port = url.port;
clonedURI.relative = url.relative;
clonedURI.path = url.path;
clonedURI.directory = url.directory;
clonedURI.file = url.file;
clonedURI.query = url.query;
clonedURI.fragment = url.fragment;
do return clonedURI end;
end
__xrfragment_URI.prototype = _hx_e();
__xrfragment_URI.prototype.__class__ = __xrfragment_URI
2023-06-07 17:42:21 +02:00
2023-11-28 17:39:33 +01:00
__xrfragment_XRF.new = function(_fragment,_flags,_index)
2023-06-07 17:42:21 +02:00
local self = _hx_new(__xrfragment_XRF.prototype)
2023-11-28 17:39:33 +01:00
__xrfragment_XRF.super(self,_fragment,_flags,_index)
2023-06-07 17:42:21 +02:00
return self
end
2023-11-28 17:39:33 +01:00
__xrfragment_XRF.super = function(self,_fragment,_flags,_index)
2024-02-16 17:36:27 +01:00
self.floats = Array.new();
self.shift = Array.new();
2023-06-07 17:42:21 +02:00
self.fragment = _fragment;
self.flags = _flags;
2023-11-28 17:39:33 +01:00
self.index = _index;
2023-06-07 17:42:21 +02:00
end
_hx_exports["xrfragment"]["XRF"] = __xrfragment_XRF
__xrfragment_XRF.__name__ = true
__xrfragment_XRF.set = function(flag,flags)
do return _hx_bit.bor(flags,flag) end;
end
__xrfragment_XRF.unset = function(flag,flags)
do return _hx_bit.band(flags,_hx_bit.bnot(flag)) end;
end
__xrfragment_XRF.prototype = _hx_e();
__xrfragment_XRF.prototype.is = function(self,flag)
2023-11-03 21:22:05 +01:00
if (not __lua_Boot.__instanceof(self.flags, Int)) then
self.flags = 0;
end;
2023-06-07 17:42:21 +02:00
do return (_hx_bit.band(self.flags,flag)) ~= 0 end
end
__xrfragment_XRF.prototype.validate = function(self,value)
self:guessType(self, value);
local ok = true;
2024-03-19 11:06:08 +01:00
if ((__lua_lib_luautf8_Utf8.len(value) == 0) and not self:is(__xrfragment_XRF.T_PREDEFINED_VIEW)) then
2024-03-19 10:53:22 +01:00
ok = false;
end;
2023-11-03 21:22:05 +01:00
if ((not self:is(__xrfragment_XRF.T_FLOAT) and self:is(__xrfragment_XRF.T_VECTOR2)) and not (__lua_Boot.__instanceof(self.x, Float) and __lua_Boot.__instanceof(self.y, Float))) then
ok = false;
end;
2023-11-28 17:39:33 +01:00
if ((not (self:is(__xrfragment_XRF.T_VECTOR2) or self:is(__xrfragment_XRF.T_STRING)) and self:is(__xrfragment_XRF.T_VECTOR3)) and not ((__lua_Boot.__instanceof(self.x, Float) and __lua_Boot.__instanceof(self.y, Float)) and __lua_Boot.__instanceof(self.z, Float))) then
2023-11-03 21:22:05 +01:00
ok = false;
2023-06-07 17:42:21 +02:00
end;
do return ok end
end
__xrfragment_XRF.prototype.guessType = function(self,v,str)
v.string = str;
2024-02-16 17:36:27 +01:00
if (__xrfragment_XRF.isReset:match(v.fragment)) then
v.reset = true;
end;
if (v.fragment == "loop") then
v.loop = true;
end;
2023-11-28 17:39:33 +01:00
if (not __lua_Boot.__instanceof(str, String)) then
do return end;
2023-06-07 17:42:21 +02:00
end;
2023-11-28 17:39:33 +01:00
if (__lua_lib_luautf8_Utf8.len(str) > 0) then
2024-02-16 17:36:27 +01:00
if (__xrfragment_XRF.isXRFScheme:match(str)) then
v.xrfScheme = true;
str = __xrfragment_XRF.isXRFScheme:replace(str, "");
v.string = str;
end;
if (String.prototype.split(str, ",").length > 1) then
local xyzn = String.prototype.split(str, ",");
2024-02-16 17:36:27 +01:00
if (xyzn.length > 0) then
v.x = Std.parseFloat(xyzn[0]);
2023-11-28 17:39:33 +01:00
end;
2024-02-16 17:36:27 +01:00
if (xyzn.length > 1) then
v.y = Std.parseFloat(xyzn[1]);
2023-11-28 17:39:33 +01:00
end;
2024-02-16 17:36:27 +01:00
if (xyzn.length > 2) then
v.z = Std.parseFloat(xyzn[2]);
2023-11-28 17:39:33 +01:00
end;
2024-02-16 17:36:27 +01:00
local _g = 0;
local _g1 = xyzn.length;
while (_g < _g1) do _hx_do_first_1 = false;
2024-02-16 17:36:27 +01:00
_g = _g + 1;
local i = _g - 1;
v.shift:push(__xrfragment_XRF.isShift:match(xyzn[i]));
v.floats:push(Std.parseFloat(__xrfragment_XRF.isShift:replace(xyzn[i], "")));
2023-11-28 17:39:33 +01:00
end;
2023-11-03 21:22:05 +01:00
end;
2023-11-28 17:39:33 +01:00
if (__xrfragment_XRF.isColor:match(str)) then
v.color = str;
2023-06-07 17:42:21 +02:00
end;
2023-11-28 17:39:33 +01:00
if (__xrfragment_XRF.isFloat:match(str)) then
v.x = Std.parseFloat(str);
v.float = v.x;
2023-06-07 17:42:21 +02:00
end;
2023-11-28 17:39:33 +01:00
if (__xrfragment_XRF.isInt:match(str)) then
v.int = Std.parseInt(str);
v.x = v.int;
2024-02-16 17:36:27 +01:00
v.floats:push(v.x);
2023-06-07 17:42:21 +02:00
end;
2023-11-28 17:39:33 +01:00
v.filter = __xrfragment_Filter.new(Std.string(Std.string(v.fragment) .. Std.string("=")) .. Std.string(v.string));
else
v.filter = __xrfragment_Filter.new(v.fragment);
2023-06-07 17:42:21 +02:00
end;
end
__xrfragment_XRF.prototype.__class__ = __xrfragment_XRF
local hasBit32, bit32 = pcall(require, 'bit32')
if hasBit32 then --if we are on Lua 5.1, bit32 will be the default.
_hx_bit_raw = bit32
_hx_bit = setmetatable({}, { __index = _hx_bit_raw })
2023-06-07 17:42:21 +02:00
-- lua 5.2 weirdness
_hx_bit.bnot = function(...) return _hx_bit_clamp(_hx_bit_raw.bnot(...)) end
_hx_bit.bxor = function(...) return _hx_bit_clamp(_hx_bit_raw.bxor(...)) end
else
--If we do not have bit32, fallback to 'bit'
local hasBit, bit = pcall(require, 'bit')
if not hasBit then
error("Failed to load bit or bit32")
end
_hx_bit_raw = bit
_hx_bit = setmetatable({}, { __index = _hx_bit_raw })
2023-06-07 17:42:21 +02:00
end
2023-06-07 17:42:21 +02:00
-- see https://github.com/HaxeFoundation/haxe/issues/8849
_hx_bit.bor = function(...) return _hx_bit_clamp(_hx_bit_raw.bor(...)) end
_hx_bit.band = function(...) return _hx_bit_clamp(_hx_bit_raw.band(...)) end
_hx_bit.arshift = function(...) return _hx_bit_clamp(_hx_bit_raw.arshift(...)) end
2023-06-07 17:42:21 +02:00
if _hx_bit_raw then
_hx_bit_clamp = function(v)
if v <= 2147483647 and v >= -2147483648 then
if v > 0 then return _G.math.floor(v)
else return _G.math.ceil(v)
end
end
if v > 2251798999999999 then v = v*2 end;
if (v ~= v or math.abs(v) == _G.math.huge) then return nil end
return _hx_bit_raw.band(v, 2147483647 ) - math.abs(_hx_bit_raw.band(v, 2147483648))
end
else
_hx_bit_clamp = function(v)
if v < -2147483648 then
return -2147483648
elseif v > 2147483647 then
return 2147483647
elseif v > 0 then
return _G.math.floor(v)
else
return _G.math.ceil(v)
end
end
end;
_hx_array_mt.__index = Array.prototype
if package.loaded.luv then
_hx_luv = _G.require("luv");
else
_hx_luv = {
run=function(mode) return false end,
loop_alive=function() return false end
}
end
2023-06-07 17:42:21 +02:00
local _hx_static_init = function()
if (__lua_lib_lrexlib_Rex == nil) then
_G.error(__haxe_Exception.thrown("Rex is missing. Please install lrexlib-pcre2."),0);
2023-06-07 17:42:21 +02:00
end;
String.__name__ = true;
Array.__name__ = true;EReg.FLAGS = __lua_lib_lrexlib_Rex.flags();
2024-02-16 17:36:27 +01:00
__haxe_Template.splitter = EReg.new("(::[A-Za-z0-9_ ()&|!+=/><*.\"-]+::|\\$\\$([A-Za-z0-9_-]+)\\()", "");
__haxe_Template.expr_splitter = EReg.new("(\\(|\\)|[ \r\n\t]*\"[^\"]*\"[ \r\n\t]*|[!+=/><*.&|-]+)", "");
__haxe_Template.expr_trim = EReg.new("^[ ]*([^ ]+)[ ]*$", "");
__haxe_Template.expr_int = EReg.new("^[0-9]+$", "");
__haxe_Template.expr_float = EReg.new("^([+-]?)(?=\\d|,\\d)\\d*(,\\d*)?([Ee]([+-]?\\d+))?$", "");
__haxe_Template.globals = _hx_e();
__haxe_Template.hxKeepArrayIterator = __haxe_iterators_ArrayIterator.new(_hx_tab_array({}, 0));
2023-06-07 17:42:21 +02:00
__haxe_ds_StringMap.tnull = ({});
__xrfragment_Parser.error = "";
__xrfragment_Parser.debug = false;
2024-02-16 17:36:27 +01:00
__xrfragment_URI.__meta__ = _hx_o({__fields__={statics=true},statics=_hx_o({__fields__={template=true},template=_hx_o({__fields__={keep=true},keep=nil})})});
2024-04-16 15:19:08 +02:00
__xrfragment_URI._parts = _hx_tab_array({[0]="source", "scheme", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "fragment"}, 14);
2024-02-16 17:36:27 +01:00
__xrfragment_XRF.IMMUTABLE = 1;
2023-06-07 17:42:21 +02:00
__xrfragment_XRF.PROP_BIND = 2;
__xrfragment_XRF.QUERY_OPERATOR = 4;
__xrfragment_XRF.PROMPT = 8;
2024-02-16 17:36:27 +01:00
__xrfragment_XRF.CUSTOMFRAG = 16;
2023-06-07 17:42:21 +02:00
__xrfragment_XRF.NAVIGATOR = 32;
__xrfragment_XRF.METADATA = 64;
2023-06-07 17:42:21 +02:00
__xrfragment_XRF.PV_OVERRIDE = 128;
__xrfragment_XRF.PV_EXECUTE = 256;
__xrfragment_XRF.T_COLOR = 8192;
__xrfragment_XRF.T_INT = 16384;
__xrfragment_XRF.T_FLOAT = 32768;
__xrfragment_XRF.T_VECTOR2 = 65536;
__xrfragment_XRF.T_VECTOR3 = 131072;
__xrfragment_XRF.T_URL = 262144;
__xrfragment_XRF.T_PREDEFINED_VIEW = 524288;
__xrfragment_XRF.T_STRING = 1048576;
2024-02-16 17:36:27 +01:00
__xrfragment_XRF.T_MEDIAFRAG = 2097152;
__xrfragment_XRF.T_DYNAMICKEY = 4194304;
2023-06-07 17:42:21 +02:00
2024-02-16 17:36:27 +01:00
__xrfragment_XRF.T_DYNAMICKEYVALUE = 8388608;
2023-06-07 17:42:21 +02:00
__xrfragment_XRF.isColor = EReg.new("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", "");
2023-11-03 21:22:05 +01:00
__xrfragment_XRF.isInt = EReg.new("^[-0-9]+$", "");
2023-06-07 17:42:21 +02:00
2023-11-03 21:22:05 +01:00
__xrfragment_XRF.isFloat = EReg.new("^[-0-9]+\\.[0-9]+$", "");
2023-06-07 17:42:21 +02:00
__xrfragment_XRF.isVector = EReg.new("([,]+|\\w)", "");
__xrfragment_XRF.isUrl = EReg.new("(://)?\\..*", "");
__xrfragment_XRF.isUrlOrPretypedView = EReg.new("(^#|://)?\\..*", "");
__xrfragment_XRF.isString = EReg.new(".*", "");
2024-02-16 17:36:27 +01:00
__xrfragment_XRF.operators = EReg.new("(^[-]|^[!]|[\\*]$)", "g");
2023-11-28 17:39:33 +01:00
__xrfragment_XRF.isProp = EReg.new("^.*=[><=]?", "");
__xrfragment_XRF.isExclude = EReg.new("^-", "");
__xrfragment_XRF.isDeep = EReg.new("\\*", "");
__xrfragment_XRF.isNumber = EReg.new("^[0-9\\.]+$", "");
2024-02-16 17:36:27 +01:00
__xrfragment_XRF.isMediaFrag = EReg.new("^([0-9\\.,\\*+-]+)$", "");
__xrfragment_XRF.isReset = EReg.new("^!", "");
__xrfragment_XRF.isShift = EReg.new("^(\\+|--)", "");
__xrfragment_XRF.isXRFScheme = EReg.new("^xrf://", "");
2023-06-07 17:42:21 +02:00
end
2024-02-16 17:36:27 +01:00
_hx_bind = function(o,m)
if m == nil then return nil end;
local f;
if o._hx__closures == nil then
_G.rawset(o, '_hx__closures', {});
else
f = o._hx__closures[m];
end
if (f == nil) then
f = function(...) return m(o, ...) end;
o._hx__closures[m] = f;
end
return f;
end
2023-06-07 17:42:21 +02:00
_hx_print = print or (function() end)
_hx_table = {}
_hx_table.pack = _G.table.pack or function(...)
return {...}
end
_hx_table.unpack = _G.table.unpack or _G.unpack
_hx_table.maxn = _G.table.maxn or function(t)
local maxn=0;
for i in pairs(t) do
maxn=type(i)=='number'and i>maxn and i or maxn
end
return maxn
end;
_hx_wrap_if_string_field = function(o, fld)
if _G.type(o) == 'string' then
if fld == 'length' then
return _G.string.len(o)
else
return String.prototype[fld]
end
else
return o[fld]
end
end
2024-02-16 17:36:27 +01:00
_hx_dyn_add = function(a,b)
if (_G.type(a) == 'string' or _G.type(b) == 'string') then
return Std.string(a)..Std.string(b)
else
return a + b;
end;
end;
function _hx_handle_error(obj)
local message = tostring(obj)
if _G.debug and _G.debug.traceback then
-- level 2 to skip _hx_handle_error
message = _G.debug.traceback(message, 2)
end
return setmetatable({}, { __tostring = function() return message end })
end
2023-06-07 17:42:21 +02:00
_hx_static_init();
return _hx_exports