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 )
2024-07-09 19:27:21 +02:00
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 ( )
2024-07-09 19:27:21 +02:00
__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 ( )
2024-07-09 19:27:21 +02:00
__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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 )
2024-07-09 19:27:21 +02:00
local chunks = String.prototype . split ( by , " $$ " ) ;
2023-06-07 17:42:21 +02:00
local _g = _hx_tab_array ( { } , 0 ) ;
local _g1 = 0 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
do return _G.tonumber ( numString , 16 ) end ;
2023-06-07 17:42:21 +02:00
end ;
end ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 )
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
__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
2024-07-09 19:27:21 +02:00
__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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ( )
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 = " " ;
2024-07-09 19:27:21 +02:00
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 } ) ) ;
2024-07-09 19:27:21 +02:00
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 ( ) ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
if ( String.prototype . substr ( p , 0 , length ) == kwd ) then
2024-02-16 17:36:27 +01:00
pos = length ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 ( ) ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 )
2024-07-09 19:27:21 +02:00
__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 ) ;
2024-07-09 19:27:21 +02:00
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 }
2024-07-09 19:27:21 +02:00
__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 ;
2024-07-09 19:27:21 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
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 )
2024-07-09 19:27:21 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
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 = " " ;
2024-07-09 19:27:21 +02:00
if ( String.prototype . indexOf ( str , " > " ) ~= - 1 ) then
2023-06-07 17:42:21 +02:00
oper = " > " ;
end ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
k = String.prototype . substr ( k , 1 ) ;
2023-11-28 17:39:33 +01:00
end ;
2024-07-09 19:27:21 +02:00
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 ;
2023-09-15 19:43:11 +02:00
local rule = _hx_e ( ) ;
2023-11-28 17:39:33 +01:00
if ( __xrfragment_XRF.isNumber : match ( v ) ) then
2023-09-15 19:43:11 +02:00
local value = Std.parseFloat ( v ) ;
rule [ oper ] = value ;
2023-06-07 17:42:21 +02:00
else
2023-09-15 19:43:11 +02:00
rule [ oper ] = v ;
2023-06-07 17:42:21 +02:00
end ;
2023-11-28 17:39:33 +01:00
q.expr = rule ;
end ;
2024-07-09 19:27:21 +02:00
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 ( )
2024-07-09 19:27:21 +02:00
local _hx_2
2023-11-28 17:39:33 +01:00
if ( __xrfragment_XRF.isExclude : match ( str ) ) then
2024-07-09 19:27:21 +02:00
_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 ;
2024-07-09 19:27:21 +02:00
while ( _g < _g1 ) do _hx_do_first_1 = false ;
2023-06-07 17:42:21 +02:00
_g = _g + 1 ;
local i = _g - 1 ;
2023-09-15 19:43:11 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
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 ] ;
2024-07-09 19:27:21 +02:00
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
2024-02-29 14:36:00 +01:00
__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 ( ) ;
2024-07-09 19:27:21 +02:00
if ( ( url == nil ) or ( String.prototype . indexOf ( url , " # " ) == - 1 ) ) then
2023-06-07 17:42:21 +02:00
do return store end ;
end ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
while ( _g < _g1 ) do _hx_do_first_1 = false ;
2023-06-07 17:42:21 +02:00
_g = _g + 1 ;
local i = _g - 1 ;
2024-07-09 19:27:21 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
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 )
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ) ;
2024-07-09 19:27:21 +02:00
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 " ) ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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 ;
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
_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
2024-07-09 19:27:21 +02:00
2023-06-07 17:42:21 +02:00
-- see https://github.com/HaxeFoundation/haxe/issues/8849
2024-07-09 19:27:21 +02:00
_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
2024-07-09 19:27:21 +02:00
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
2024-07-09 19:27:21 +02:00
_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 ;
2023-08-15 18:27:26 +02:00
__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 ;
2024-07-09 19:27:21 +02:00
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