2023-03-09 19:58:08 +01:00
import sys
import math as python_lib_Math
import math as Math
import inspect as python_lib_Inspect
import sys as python_lib_Sys
import functools as python_lib_Functools
import re as python_lib_Re
import traceback as python_lib_Traceback
2023-03-10 18:49:16 +01:00
import urllib . parse as python_lib_urllib_Parse
2023-03-09 19:58:08 +01:00
class _hx_AnonObject :
_hx_disable_getattr = False
def __init__ ( self , fields ) :
self . __dict__ = fields
def __repr__ ( self ) :
return repr ( self . __dict__ )
def __contains__ ( self , item ) :
return item in self . __dict__
def __getitem__ ( self , item ) :
return self . __dict__ [ item ]
def __getattr__ ( self , name ) :
if ( self . _hx_disable_getattr ) :
raise AttributeError ( ' field does not exist ' )
else :
return None
def _hx_hasattr ( self , field ) :
self . _hx_disable_getattr = True
try :
getattr ( self , field )
self . _hx_disable_getattr = False
return True
except AttributeError :
self . _hx_disable_getattr = False
return False
class Enum :
_hx_class_name = " Enum "
__slots__ = ( " tag " , " index " , " params " )
_hx_fields = [ " tag " , " index " , " params " ]
_hx_methods = [ " __str__ " ]
def __init__ ( self , tag , index , params ) :
self . tag = tag
self . index = index
self . params = params
def __str__ ( self ) :
if ( self . params is None ) :
return self . tag
else :
return self . tag + ' ( ' + ( ' , ' . join ( str ( v ) for v in self . params ) ) + ' ) '
class Class : pass
class EReg :
_hx_class_name = " EReg "
__slots__ = ( " pattern " , " matchObj " , " _hx_global " )
_hx_fields = [ " pattern " , " matchObj " , " global " ]
2023-12-06 12:55:08 +01:00
_hx_methods = [ " split " , " replace " ]
2023-03-09 19:58:08 +01:00
def __init__ ( self , r , opt ) :
self . matchObj = None
self . _hx_global = False
options = 0
_g = 0
_g1 = len ( opt )
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
c = ( - 1 if ( ( i > = len ( opt ) ) ) else ord ( opt [ i ] ) )
if ( c == 109 ) :
options = ( options | python_lib_Re . M )
if ( c == 105 ) :
options = ( options | python_lib_Re . I )
if ( c == 115 ) :
options = ( options | python_lib_Re . S )
if ( c == 117 ) :
options = ( options | python_lib_Re . U )
if ( c == 103 ) :
self . _hx_global = True
self . pattern = python_lib_Re . compile ( r , options )
2023-03-10 18:49:16 +01:00
def split ( self , s ) :
if self . _hx_global :
ret = [ ]
lastEnd = 0
x = python_HaxeIterator ( python_lib_Re . finditer ( self . pattern , s ) )
while x . hasNext ( ) :
x1 = x . next ( )
x2 = HxString . substring ( s , lastEnd , x1 . start ( ) )
ret . append ( x2 )
lastEnd = x1 . end ( )
x = HxString . substr ( s , lastEnd , None )
ret . append ( x )
return ret
else :
self . matchObj = python_lib_Re . search ( self . pattern , s )
if ( self . matchObj is None ) :
return [ s ]
else :
return [ HxString . substring ( s , 0 , self . matchObj . start ( ) ) , HxString . substr ( s , self . matchObj . end ( ) , None ) ]
2023-12-06 12:55:08 +01:00
def replace ( self , s , by ) :
_this = by . split ( " $$ " )
by = " _hx_#repl#__ " . join ( [ python_Boot . toString1 ( x1 , ' ' ) for x1 in _this ] )
def _hx_local_0 ( x ) :
res = by
g = x . groups ( )
_g = 0
_g1 = len ( g )
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
gs = g [ i ]
if ( gs is None ) :
continue
delimiter = ( " $ " + HxOverrides . stringOrNull ( str ( ( i + 1 ) ) ) )
_this = ( list ( res ) if ( ( delimiter == " " ) ) else res . split ( delimiter ) )
res = gs . join ( [ python_Boot . toString1 ( x1 , ' ' ) for x1 in _this ] )
_this = res . split ( " _hx_#repl#__ " )
res = " $ " . join ( [ python_Boot . toString1 ( x1 , ' ' ) for x1 in _this ] )
return res
replace = _hx_local_0
return python_lib_Re . sub ( self . pattern , replace , s , ( 0 if ( self . _hx_global ) else 1 ) )
2023-03-09 19:58:08 +01:00
class Reflect :
_hx_class_name = " Reflect "
__slots__ = ( )
2023-12-06 12:55:08 +01:00
_hx_statics = [ " field " , " deleteField " , " copy " ]
2023-03-09 19:58:08 +01:00
@staticmethod
def field ( o , field ) :
return python_Boot . field ( o , field )
2023-04-14 15:19:52 +02:00
@staticmethod
def deleteField ( o , field ) :
if ( field in python_Boot . keywords ) :
field = ( " _hx_ " + field )
elif ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) :
field = ( " _hx_ " + field )
if ( not python_Boot . hasField ( o , field ) ) :
return False
o . __delattr__ ( field )
return True
2023-12-06 12:55:08 +01:00
@staticmethod
def copy ( o ) :
if ( o is None ) :
return None
o2 = _hx_AnonObject ( { } )
_g = 0
_g1 = python_Boot . fields ( o )
while ( _g < len ( _g1 ) ) :
f = ( _g1 [ _g ] if _g > = 0 and _g < len ( _g1 ) else None )
_g = ( _g + 1 )
value = Reflect . field ( o , f )
setattr ( o2 , ( ( " _hx_ " + f ) if ( ( f in python_Boot . keywords ) ) else ( ( " _hx_ " + f ) if ( ( ( ( ( len ( f ) > 2 ) and ( ( ord ( f [ 0 ] ) == 95 ) ) ) and ( ( ord ( f [ 1 ] ) == 95 ) ) ) and ( ( ord ( f [ ( len ( f ) - 1 ) ] ) != 95 ) ) ) ) else f ) ) , value )
return o2
2023-03-09 19:58:08 +01:00
class Std :
_hx_class_name = " Std "
__slots__ = ( )
2023-03-10 18:49:16 +01:00
_hx_statics = [ " isOfType " , " string " , " parseInt " , " shortenPossibleNumber " , " parseFloat " ]
2023-03-09 19:58:08 +01:00
@staticmethod
def isOfType ( v , t ) :
if ( ( v is None ) and ( ( t is None ) ) ) :
return False
if ( t is None ) :
return False
if ( ( type ( t ) == type ) and ( t == Dynamic ) ) :
return ( v is not None )
isBool = isinstance ( v , bool )
if ( ( ( type ( t ) == type ) and ( t == Bool ) ) and isBool ) :
return True
if ( ( ( ( not isBool ) and ( not ( ( type ( t ) == type ) and ( t == Bool ) ) ) ) and ( ( type ( t ) == type ) and ( t == Int ) ) ) and isinstance ( v , int ) ) :
return True
vIsFloat = isinstance ( v , float )
tmp = None
tmp1 = None
if ( ( ( not isBool ) and vIsFloat ) and ( ( type ( t ) == type ) and ( t == Int ) ) ) :
f = v
tmp1 = ( ( ( f != Math . POSITIVE_INFINITY ) and ( ( f != Math . NEGATIVE_INFINITY ) ) ) and ( not python_lib_Math . isnan ( f ) ) )
else :
tmp1 = False
if tmp1 :
tmp1 = None
try :
tmp1 = int ( v )
except BaseException as _g :
None
tmp1 = None
tmp = ( v == tmp1 )
else :
tmp = False
if ( ( tmp and ( ( v < = 2147483647 ) ) ) and ( ( v > = - 2147483648 ) ) ) :
return True
if ( ( ( not isBool ) and ( ( type ( t ) == type ) and ( t == Float ) ) ) and isinstance ( v , ( float , int ) ) ) :
return True
if ( ( type ( t ) == type ) and ( t == str ) ) :
return isinstance ( v , str )
isEnumType = ( ( type ( t ) == type ) and ( t == Enum ) )
if ( ( isEnumType and python_lib_Inspect . isclass ( v ) ) and hasattr ( v , " _hx_constructs " ) ) :
return True
if isEnumType :
return False
isClassType = ( ( type ( t ) == type ) and ( t == Class ) )
if ( ( ( ( isClassType and ( not isinstance ( v , Enum ) ) ) and python_lib_Inspect . isclass ( v ) ) and hasattr ( v , " _hx_class_name " ) ) and ( not hasattr ( v , " _hx_constructs " ) ) ) :
return True
if isClassType :
return False
tmp = None
try :
tmp = isinstance ( v , t )
except BaseException as _g :
None
tmp = False
if tmp :
return True
if python_lib_Inspect . isclass ( t ) :
cls = t
loop = None
def _hx_local_1 ( intf ) :
f = ( intf . _hx_interfaces if ( hasattr ( intf , " _hx_interfaces " ) ) else [ ] )
if ( f is not None ) :
_g = 0
while ( _g < len ( f ) ) :
i = ( f [ _g ] if _g > = 0 and _g < len ( f ) else None )
_g = ( _g + 1 )
if ( i == cls ) :
return True
else :
l = loop ( i )
if l :
return True
return False
else :
return False
loop = _hx_local_1
currentClass = v . __class__
result = False
while ( currentClass is not None ) :
if loop ( currentClass ) :
result = True
break
currentClass = python_Boot . getSuperClass ( currentClass )
return result
else :
return False
@staticmethod
def string ( s ) :
return python_Boot . toString1 ( s , " " )
@staticmethod
def parseInt ( x ) :
if ( x is None ) :
return None
try :
return int ( x )
except BaseException as _g :
None
base = 10
_hx_len = len ( x )
foundCount = 0
sign = 0
firstDigitIndex = 0
lastDigitIndex = - 1
previous = 0
_g = 0
_g1 = _hx_len
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
c = ( - 1 if ( ( i > = len ( x ) ) ) else ord ( x [ i ] ) )
if ( ( ( c > 8 ) and ( ( c < 14 ) ) ) or ( ( c == 32 ) ) ) :
if ( foundCount > 0 ) :
return None
continue
else :
c1 = c
if ( c1 == 43 ) :
if ( foundCount == 0 ) :
sign = 1
elif ( not ( ( ( 48 < = c ) and ( ( c < = 57 ) ) ) ) ) :
if ( not ( ( ( base == 16 ) and ( ( ( ( 97 < = c ) and ( ( c < = 122 ) ) ) or ( ( ( 65 < = c ) and ( ( c < = 90 ) ) ) ) ) ) ) ) ) :
break
elif ( c1 == 45 ) :
if ( foundCount == 0 ) :
sign = - 1
elif ( not ( ( ( 48 < = c ) and ( ( c < = 57 ) ) ) ) ) :
if ( not ( ( ( base == 16 ) and ( ( ( ( 97 < = c ) and ( ( c < = 122 ) ) ) or ( ( ( 65 < = c ) and ( ( c < = 90 ) ) ) ) ) ) ) ) ) :
break
elif ( c1 == 48 ) :
if ( not ( ( ( foundCount == 0 ) or ( ( ( foundCount == 1 ) and ( ( sign != 0 ) ) ) ) ) ) ) :
if ( not ( ( ( 48 < = c ) and ( ( c < = 57 ) ) ) ) ) :
if ( not ( ( ( base == 16 ) and ( ( ( ( 97 < = c ) and ( ( c < = 122 ) ) ) or ( ( ( 65 < = c ) and ( ( c < = 90 ) ) ) ) ) ) ) ) ) :
break
elif ( ( c1 == 120 ) or ( ( c1 == 88 ) ) ) :
if ( ( previous == 48 ) and ( ( ( ( foundCount == 1 ) and ( ( sign == 0 ) ) ) or ( ( ( foundCount == 2 ) and ( ( sign != 0 ) ) ) ) ) ) ) :
base = 16
elif ( not ( ( ( 48 < = c ) and ( ( c < = 57 ) ) ) ) ) :
if ( not ( ( ( base == 16 ) and ( ( ( ( 97 < = c ) and ( ( c < = 122 ) ) ) or ( ( ( 65 < = c ) and ( ( c < = 90 ) ) ) ) ) ) ) ) ) :
break
elif ( not ( ( ( 48 < = c ) and ( ( c < = 57 ) ) ) ) ) :
if ( not ( ( ( base == 16 ) and ( ( ( ( 97 < = c ) and ( ( c < = 122 ) ) ) or ( ( ( 65 < = c ) and ( ( c < = 90 ) ) ) ) ) ) ) ) ) :
break
if ( ( ( foundCount == 0 ) and ( ( sign == 0 ) ) ) or ( ( ( foundCount == 1 ) and ( ( sign != 0 ) ) ) ) ) :
firstDigitIndex = i
foundCount = ( foundCount + 1 )
lastDigitIndex = i
previous = c
if ( firstDigitIndex < = lastDigitIndex ) :
digits = HxString . substring ( x , firstDigitIndex , ( lastDigitIndex + 1 ) )
try :
return ( ( ( - 1 if ( ( sign == - 1 ) ) else 1 ) ) * int ( digits , base ) )
except BaseException as _g :
return None
return None
2023-03-10 18:49:16 +01:00
@staticmethod
def shortenPossibleNumber ( x ) :
r = " "
_g = 0
_g1 = len ( x )
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
c = ( " " if ( ( ( i < 0 ) or ( ( i > = len ( x ) ) ) ) ) else x [ i ] )
_g2 = HxString . charCodeAt ( c , 0 )
if ( _g2 is None ) :
break
else :
_g3 = _g2
if ( ( ( ( ( ( ( ( ( ( ( _g3 == 57 ) or ( ( _g3 == 56 ) ) ) or ( ( _g3 == 55 ) ) ) or ( ( _g3 == 54 ) ) ) or ( ( _g3 == 53 ) ) ) or ( ( _g3 == 52 ) ) ) or ( ( _g3 == 51 ) ) ) or ( ( _g3 == 50 ) ) ) or ( ( _g3 == 49 ) ) ) or ( ( _g3 == 48 ) ) ) or ( ( _g3 == 46 ) ) ) :
r = ( ( " null " if r is None else r ) + ( " null " if c is None else c ) )
else :
break
return r
@staticmethod
def parseFloat ( x ) :
try :
return float ( x )
except BaseException as _g :
None
if ( x is not None ) :
r1 = Std . shortenPossibleNumber ( x )
if ( r1 != x ) :
return Std . parseFloat ( r1 )
return Math . NaN
2023-03-09 19:58:08 +01:00
class Float : pass
class Int : pass
class Bool : pass
class Dynamic : pass
2023-03-21 17:57:54 +01:00
class StringTools :
_hx_class_name = " StringTools "
__slots__ = ( )
2023-09-15 19:43:11 +02:00
_hx_statics = [ " isSpace " , " ltrim " , " rtrim " , " trim " ]
2023-03-21 17:57:54 +01:00
@staticmethod
def isSpace ( s , pos ) :
if ( ( ( len ( s ) == 0 ) or ( ( pos < 0 ) ) ) or ( ( pos > = len ( s ) ) ) ) :
return False
c = HxString . charCodeAt ( s , pos )
if ( not ( ( ( c > 8 ) and ( ( c < 14 ) ) ) ) ) :
return ( c == 32 )
else :
return True
@staticmethod
def ltrim ( s ) :
l = len ( s )
r = 0
while ( ( r < l ) and StringTools . isSpace ( s , r ) ) :
r = ( r + 1 )
if ( r > 0 ) :
return HxString . substr ( s , r , ( l - r ) )
else :
return s
@staticmethod
def rtrim ( s ) :
l = len ( s )
r = 0
while ( ( r < l ) and StringTools . isSpace ( s , ( ( l - r ) - 1 ) ) ) :
r = ( r + 1 )
if ( r > 0 ) :
return HxString . substr ( s , 0 , ( l - r ) )
else :
return s
@staticmethod
def trim ( s ) :
return StringTools . ltrim ( StringTools . rtrim ( s ) )
2023-03-09 22:32:28 +01:00
class Test :
_hx_class_name = " Test "
2023-03-09 19:58:08 +01:00
__slots__ = ( )
2024-02-01 20:10:41 +01:00
_hx_statics = [ " errors " , " main " , " test " , " equalX " , " equalXY " , " equalXYZ " , " equalMediaFragment " , " equalMediaFragmentSpd " ]
2023-03-09 19:58:08 +01:00
@staticmethod
def main ( ) :
2024-02-02 12:13:07 +01:00
Test . test ( " url.json " , [ _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testPredefinedView " , ' input ' : " mypredefinedview " , ' out ' : True } ) , ' label ' : " test predefined view executed " , ' data ' : " http://foo.com?foo=1#mypredefinedview " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testPredefinedView " , ' input ' : " another " , ' out ' : True } ) , ' label ' : " test predefined view executed (multiple) " , ' data ' : " http://foo.com?foo=1#mypredefinedview&another " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testPredefinedView " , ' input ' : " mypredefinedview " , ' out ' : True } ) , ' label ' : " test predefined view executed (multiple) " , ' data ' : " http://foo.com?foo=1#mypredefinedview&another " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testParsed " , ' input ' : " mycustom " , ' out ' : True } ) , ' label ' : " test custom property " , ' data ' : " http://foo.com?foo=1#mycustom=foo " } ) ] )
Test . test ( " pos.json " , [ _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.string " , ' input ' : " pos " , ' out ' : " 1.2,2.2 " } ) , ' label ' : " equal.string " , ' data ' : " http://foo.com?foo=1#pos=1.2,2.2 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.xyz " , ' input ' : " pos " , ' out ' : " 1.2,2.2,3 " } ) , ' label ' : " equal.xyz " , ' data ' : " http://foo.com?foo=1#pos=1.2,2.2,3 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.xyz " , ' input ' : " pos " , ' out ' : " 1,2,3 " } ) , ' label ' : " pos equal.xyz " , ' data ' : " http://foo.com?foo=1#pos=1,2,3 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.string " , ' input ' : " pos " , ' out ' : " world2 " } ) , ' label ' : " pos equal.xyz " , ' data ' : " http://foo.com?foo=1#pos=world2 " } ) ] )
Test . test ( " t.json " , [ _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.x " , ' input ' : " t " , ' out ' : " 1 " } ) , ' label ' : " a equal.x " , ' data ' : " http://foo.com?foo=1#t=1 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.x " , ' input ' : " t " , ' out ' : " -1 " } ) , ' label ' : " a equal.x " , ' data ' : " http://foo.com?foo=1#t=-1 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.x " , ' input ' : " t " , ' out ' : " -1.02 " } ) , ' label ' : " a equal.x " , ' data ' : " http://foo.com?foo=1#t=-1.02 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.xy " , ' input ' : " t " , ' out ' : " 1,2 " } ) , ' label ' : " a equal.xy " , ' data ' : " http://foo.com?foo=1#t=1,2,3 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.xyz " , ' input ' : " t " , ' out ' : " 1,2,3 " } ) , ' label ' : " a equal.xyz " , ' data ' : " http://foo.com?foo=1#t=1,2,3 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.xyz " , ' input ' : " t " , ' out ' : " 1,-2,3 " } ) , ' label ' : " a equal.xyz " , ' data ' : " http://foo.com?foo=1#t=1,-2,3 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.xy " , ' input ' : " t " , ' out ' : " 1,100 " } ) , ' label ' : " a equal.xy " , ' data ' : " http://foo.com?foo=1#t=1,100 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testBrowserOverride " , ' input ' : " t " , ' out ' : True } ) , ' label ' : " browser URI can override t (defined in asset) " , ' data ' : " http://foo.com?foo=1#t=2,500 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.mediafragmentT " , ' input ' : " 3 " , ' out ' : " 500 " } ) , ' label ' : " a equal.mediafragment " , ' data ' : " http://foo.com?foo=1#t=1,100,400,500*1.2,2.3 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.mediafragmentTSpd " , ' input ' : " 1 " , ' out ' : " 2.3 " } ) , ' label ' : " a equal.mediafragmentSpeed " , ' data ' : " http://foo.com?foo=1#t=1,100,400,500*1.2,2.3 " } ) ] )
Test . test ( " xywh.json " , [ _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.mediafragmentXYWH " , ' input ' : " 2 " , ' out ' : " 1 " } ) , ' label ' : " xywh " , ' data ' : " http://foo.com?foo=1#xywh=0,0,1,1 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.mediafragmentXYWH " , ' input ' : " 3 " , ' out ' : " 500 " } ) , ' label ' : " a equal.mediafragment " , ' data ' : " http://foo.com?foo=1#xywh=1,100,400,500*1.2,2.3 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " equal.mediafragmentXYWHSpd " , ' input ' : " 1 " , ' out ' : " 2.3 " } ) , ' label ' : " a equal.mediafragmentSpeed " , ' data ' : " http://foo.com?foo=1#xywh=1,100,400,500*1.2,2.3 " } ) ] )
Test . test ( " filter.selectors.json " , [ _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testParsed " , ' input ' : " myid " , ' out ' : True } ) , ' label ' : " myid exists " , ' data ' : " http://foo.com?foo=1#foo*&-sometag&-someid&myid " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testParsed " , ' input ' : " tag " , ' out ' : True } ) , ' label ' : " tag exists " , ' data ' : " http://foo.com?foo=1#tag=bar " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testParsed " , ' input ' : " tag " , ' out ' : True } ) , ' label ' : " tag exists " , ' data ' : " http://foo.com?foo=1#-tag=bar " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testParsed " , ' input ' : " price " , ' out ' : True } ) , ' label ' : " filter test " , ' data ' : " http://foo.com?foo=1#price=>2 " } ) , _hx_AnonObject ( { ' fn ' : " filter " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testProperty " , ' input ' : [ " tag " , " bar " ] , ' out ' : True } ) , ' data ' : " tag=bar " } ) , _hx_AnonObject ( { ' fn ' : " filter " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testProperty " , ' input ' : [ " tag " , " foo " ] , ' out ' : False } ) , ' data ' : " -tag=foo " } ) , _hx_AnonObject ( { ' fn ' : " filter " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testProperty " , ' input ' : [ " tag " , " foo " ] , ' out ' : False } ) , ' data ' : " -tag*=foo " } ) , _hx_AnonObject ( { ' fn ' : " filter " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testProperty " , ' input ' : [ " tag " , " 3 " ] , ' out ' : False } ) , ' data ' : " -tag=>2 " } ) , _hx_AnonObject ( { ' fn ' : " filter " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testProperty " , ' input ' : [ " price " , " 1 " ] , ' out ' : False } ) , ' data ' : " price=>2 " } ) , _hx_AnonObject ( { ' fn ' : " filter " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testProperty " , ' input ' : [ " price " , " 5 " ] , ' out ' : False } ) , ' data ' : " price=<2 " } ) , _hx_AnonObject ( { ' fn ' : " filter " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testProperty " , ' input ' : [ " price " , " 1 " ] , ' out ' : True } ) , ' data ' : " price=<2 " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testFilterDeep " , ' input ' : [ " foo " ] , ' out ' : 1 } ) , ' label ' : " foo should be deep " , ' data ' : " #foo* " } ) , _hx_AnonObject ( { ' fn ' : " url " , ' expect ' : _hx_AnonObject ( { ' fn ' : " testFilterDeep " , ' input ' : [ " foo " ] , ' out ' : 2 } ) , ' label ' : " foo should be deep incl. embeds " , ' data ' : " #foo** " } ) ] )
2023-03-30 19:51:32 +02:00
if ( Test . errors > 1 ) :
print ( str ( ( ( " \n ----- \n [ ❌] " + Std . string ( Test . errors ) ) + " errors :/ " ) ) )
2023-03-10 18:49:16 +01:00
@staticmethod
2023-11-03 21:22:05 +01:00
def test ( topic , spec ) :
print ( str ( ( " \n [.] running " + ( " null " if topic is None else topic ) ) ) )
2023-12-06 12:55:08 +01:00
Filter = xrfragment_Filter
2023-03-17 16:06:24 +01:00
_g = 0
_g1 = len ( spec )
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
2023-12-06 12:55:08 +01:00
f = None
2023-03-17 16:06:24 +01:00
res = None
valid = False
item = ( spec [ i ] if i > = 0 and i < len ( spec ) else None )
2023-12-06 12:55:08 +01:00
f = xrfragment_Filter ( Reflect . field ( item , " data " ) )
res = xrfragment_URI . parse ( Reflect . field ( item , " data " ) , None )
2023-03-21 17:57:54 +01:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " test " ) :
2023-12-06 12:55:08 +01:00
valid = ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) == f . test ( HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 0 ) ) )
2023-03-24 17:10:30 +01:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " testProperty " ) :
2023-12-06 12:55:08 +01:00
valid = ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) == f . testProperty ( HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 0 ) , HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 1 ) ) )
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " testPropertyInt " ) :
valid = ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) == f . testProperty ( HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 0 ) , HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 1 ) ) )
2023-03-24 17:10:30 +01:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " testPropertyExclude " ) :
2023-12-06 12:55:08 +01:00
valid = ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) == f . testProperty ( HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 0 ) , HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 1 ) , True ) )
2023-03-30 19:51:32 +02:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " testParsed " ) :
valid = ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) == python_Boot . hasField ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) )
2023-04-14 17:37:33 +02:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " testPredefinedView " ) :
valid = ( python_Boot . hasField ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) and ( HxOverrides . eq ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) , Reflect . field ( Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) , " is " ) ( xrfragment_XRF . PV_EXECUTE ) ) ) )
2023-04-20 18:49:18 +02:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " testPropertyAssign " ) :
valid = ( python_Boot . hasField ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) and ( HxOverrides . eq ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) , Reflect . field ( Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) , " is " ) ( xrfragment_XRF . PROP_BIND ) ) ) )
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " testBrowserOverride " ) :
2023-05-05 13:26:17 +02:00
valid = ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) == python_Boot . hasField ( xrfragment_URI . parse ( Reflect . field ( item , " data " ) , xrfragment_XRF . NAVIGATOR ) , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) )
2023-05-04 13:28:12 +02:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " testEmbedOverride " ) :
2023-08-15 18:27:26 +02:00
valid = ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) == python_Boot . hasField ( xrfragment_URI . parse ( Reflect . field ( item , " data " ) , xrfragment_XRF . METADATA ) , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) )
2023-03-17 16:06:24 +01:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " equal.string " ) :
2023-04-14 15:19:52 +02:00
valid = ( Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) and ( HxOverrides . eq ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) , Reflect . field ( Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) , " string " ) ) ) )
2023-11-03 21:22:05 +01:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " equal.x " ) :
valid = Test . equalX ( res , item )
2023-03-17 16:06:24 +01:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " equal.xy " ) :
2023-04-14 15:19:52 +02:00
valid = Test . equalXY ( res , item )
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " equal.xyz " ) :
valid = Test . equalXYZ ( res , item )
2024-02-02 12:13:07 +01:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " equal.mediafragmentT " ) :
valid = Test . equalMediaFragment ( res , item , " t " )
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " equal.mediafragmentXYWH " ) :
valid = Test . equalMediaFragment ( res , item , " xywh " )
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " equal.mediafragmentTSpd " ) :
valid = Test . equalMediaFragmentSpd ( res , item , " t " )
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " equal.mediafragmentXYWHSpd " ) :
valid = Test . equalMediaFragmentSpd ( res , item , " xywh " )
2023-12-06 12:55:08 +01:00
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " testFilterRoot " ) :
valid = ( python_Boot . hasField ( res , HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 0 ) ) and ( HxOverrides . eq ( Reflect . field ( Reflect . field ( Reflect . field ( Reflect . field ( res , HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 0 ) ) , " filter " ) , " get " ) ( ) , " root " ) , Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) ) ) )
if ( Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) == " testFilterDeep " ) :
valid = ( python_Boot . hasField ( res , HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 0 ) ) and ( HxOverrides . eq ( Reflect . field ( Reflect . field ( Reflect . field ( Reflect . field ( res , HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) , 0 ) ) , " filter " ) , " get " ) ( ) , " deep " ) , Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) ) ) )
2023-03-17 16:06:24 +01:00
ok = ( " [ ✔ ] " if valid else " [ ❌] " )
2023-03-24 17:10:30 +01:00
print ( str ( ( ( ( ( ( ( " null " if ok is None else ok ) + Std . string ( Reflect . field ( item , " fn " ) ) ) + " : ' " ) + Std . string ( Reflect . field ( item , " data " ) ) ) + " ' " ) + HxOverrides . stringOrNull ( ( ( ( ( " ( " + HxOverrides . stringOrNull ( ( ( Reflect . field ( item , " label " ) if ( Reflect . field ( item , " label " ) ) else Reflect . field ( Reflect . field ( item , " expect " ) , " fn " ) ) ) ) ) + " ) " ) if ( Reflect . field ( item , " label " ) ) else " " ) ) ) ) ) )
2023-03-17 16:06:24 +01:00
if ( not valid ) :
2023-03-30 19:51:32 +02:00
_hx_local_0 = Test
_hx_local_1 = _hx_local_0 . errors
_hx_local_0 . errors = ( _hx_local_1 + 1 )
_hx_local_0 . errors
2023-03-10 18:49:16 +01:00
2023-04-14 15:19:52 +02:00
@staticmethod
2023-11-03 21:22:05 +01:00
def equalX ( res , item ) :
2023-04-14 15:19:52 +02:00
if ( ( not Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) ) and ( not Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) ) ) :
return True
elif Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) :
2023-11-03 21:22:05 +01:00
return ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) == Std . string ( Reflect . field ( Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) , " x " ) ) )
2023-04-14 15:19:52 +02:00
else :
return False
@staticmethod
2023-11-03 21:22:05 +01:00
def equalXY ( res , item ) :
2023-04-14 15:19:52 +02:00
if ( ( not Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) ) and ( not Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) ) ) :
return True
elif Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) :
2023-11-03 21:22:05 +01:00
return ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) == ( ( ( Std . string ( Reflect . field ( Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) , " x " ) ) + " , " ) + Std . string ( Reflect . field ( Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) , " y " ) ) ) ) )
2023-04-14 15:19:52 +02:00
else :
return False
2023-03-17 16:06:24 +01:00
@staticmethod
2023-11-03 21:22:05 +01:00
def equalXYZ ( res , item ) :
if ( ( not Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) ) and ( not Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) ) ) :
return True
elif Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) :
return ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) == ( ( ( ( ( Std . string ( Reflect . field ( Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) , " x " ) ) + " , " ) + Std . string ( Reflect . field ( Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) , " y " ) ) ) + " , " ) + Std . string ( Reflect . field ( Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) , " z " ) ) ) ) )
2023-03-30 19:51:32 +02:00
else :
return False
2024-02-01 20:10:41 +01:00
@staticmethod
2024-02-02 12:13:07 +01:00
def equalMediaFragment ( res , item , key ) :
2024-02-01 20:10:41 +01:00
if ( ( not Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) ) and ( not Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) ) ) :
return True
else :
2024-02-02 12:13:07 +01:00
return ( HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( res , key ) , " floats " ) , Std . parseInt ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) ) == Std . parseInt ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) ) )
2024-02-01 20:10:41 +01:00
@staticmethod
2024-02-02 12:13:07 +01:00
def equalMediaFragmentSpd ( res , item , key ) :
2024-02-01 20:10:41 +01:00
if ( ( not Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) ) and ( not Reflect . field ( res , Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) ) ) :
return True
else :
2024-02-02 12:13:07 +01:00
return ( HxOverrides . arrayGet ( Reflect . field ( Reflect . field ( res , key ) , " speed " ) , Std . parseInt ( Reflect . field ( Reflect . field ( item , " expect " ) , " input " ) ) ) == Std . parseFloat ( Reflect . field ( Reflect . field ( item , " expect " ) , " out " ) ) )
2024-02-01 20:10:41 +01:00
2023-03-30 19:51:32 +02:00
class haxe_IMap :
_hx_class_name = " haxe.IMap "
__slots__ = ( )
2023-03-09 19:58:08 +01:00
2023-03-09 22:32:28 +01:00
class haxe_Exception ( Exception ) :
_hx_class_name = " haxe.Exception "
2023-03-10 18:49:16 +01:00
__slots__ = ( " _hx___nativeStack " , " _hx___nativeException " , " _hx___previousException " )
_hx_fields = [ " __nativeStack " , " __nativeException " , " __previousException " ]
_hx_methods = [ " unwrap " ]
_hx_statics = [ " caught " ]
2023-03-09 22:32:28 +01:00
_hx_interfaces = [ ]
_hx_super = Exception
2023-03-09 19:58:08 +01:00
2023-03-09 22:32:28 +01:00
def __init__ ( self , message , previous = None , native = None ) :
self . _hx___previousException = None
self . _hx___nativeException = None
self . _hx___nativeStack = None
super ( ) . __init__ ( message )
self . _hx___previousException = previous
if ( ( native is not None ) and Std . isOfType ( native , BaseException ) ) :
self . _hx___nativeException = native
self . _hx___nativeStack = haxe_NativeStackTrace . exceptionStack ( )
2023-03-09 19:58:08 +01:00
else :
2023-03-09 22:32:28 +01:00
self . _hx___nativeException = self
infos = python_lib_Traceback . extract_stack ( )
if ( len ( infos ) != 0 ) :
infos . pop ( )
infos . reverse ( )
self . _hx___nativeStack = infos
2023-03-09 19:58:08 +01:00
2023-03-09 22:32:28 +01:00
def unwrap ( self ) :
return self . _hx___nativeException
2023-03-09 19:58:08 +01:00
@staticmethod
2023-03-09 22:32:28 +01:00
def caught ( value ) :
if Std . isOfType ( value , haxe_Exception ) :
return value
elif Std . isOfType ( value , BaseException ) :
return haxe_Exception ( str ( value ) , None , value )
2023-03-09 19:58:08 +01:00
else :
return haxe_ValueException ( value , None , value )
2023-03-09 22:32:28 +01:00
class haxe_NativeStackTrace :
_hx_class_name = " haxe.NativeStackTrace "
__slots__ = ( )
_hx_statics = [ " saveStack " , " exceptionStack " ]
2023-03-09 19:58:08 +01:00
2023-03-09 22:32:28 +01:00
@staticmethod
def saveStack ( exception ) :
pass
2023-03-09 19:58:08 +01:00
@staticmethod
2023-03-09 22:32:28 +01:00
def exceptionStack ( ) :
exc = python_lib_Sys . exc_info ( )
if ( exc [ 2 ] is not None ) :
infos = python_lib_Traceback . extract_tb ( exc [ 2 ] )
infos . reverse ( )
return infos
else :
return [ ]
2023-03-09 19:58:08 +01:00
2023-03-09 22:32:28 +01:00
class haxe_ValueException ( haxe_Exception ) :
_hx_class_name = " haxe.ValueException "
__slots__ = ( " value " , )
_hx_fields = [ " value " ]
_hx_methods = [ " unwrap " ]
_hx_statics = [ ]
_hx_interfaces = [ ]
_hx_super = haxe_Exception
2023-03-09 19:58:08 +01:00
2023-03-09 22:32:28 +01:00
def __init__ ( self , value , previous = None , native = None ) :
self . value = None
super ( ) . __init__ ( Std . string ( value ) , previous , native )
self . value = value
2023-03-09 19:58:08 +01:00
2023-03-09 22:32:28 +01:00
def unwrap ( self ) :
return self . value
2023-03-09 19:58:08 +01:00
2023-03-30 19:51:32 +02:00
class haxe_ds_StringMap :
_hx_class_name = " haxe.ds.StringMap "
__slots__ = ( " h " , )
_hx_fields = [ " h " ]
_hx_interfaces = [ haxe_IMap ]
def __init__ ( self ) :
self . h = dict ( )
2023-03-09 22:32:28 +01:00
class haxe_iterators_ArrayIterator :
_hx_class_name = " haxe.iterators.ArrayIterator "
__slots__ = ( " array " , " current " )
_hx_fields = [ " array " , " current " ]
2023-03-09 19:58:08 +01:00
_hx_methods = [ " hasNext " , " next " ]
2023-03-09 22:32:28 +01:00
def __init__ ( self , array ) :
self . current = 0
self . array = array
2023-03-09 19:58:08 +01:00
def hasNext ( self ) :
2023-03-09 22:32:28 +01:00
return ( self . current < len ( self . array ) )
2023-03-09 19:58:08 +01:00
def next ( self ) :
2023-03-09 22:32:28 +01:00
def _hx_local_3 ( ) :
def _hx_local_2 ( ) :
_hx_local_0 = self
_hx_local_1 = _hx_local_0 . current
_hx_local_0 . current = ( _hx_local_1 + 1 )
return _hx_local_1
return python_internal_ArrayImpl . _get ( self . array , _hx_local_2 ( ) )
return _hx_local_3 ( )
2023-03-09 19:58:08 +01:00
2023-03-09 22:32:28 +01:00
class haxe_iterators_ArrayKeyValueIterator :
_hx_class_name = " haxe.iterators.ArrayKeyValueIterator "
__slots__ = ( " current " , " array " )
_hx_fields = [ " current " , " array " ]
2023-03-09 19:58:08 +01:00
_hx_methods = [ " hasNext " , " next " ]
2023-03-09 22:32:28 +01:00
def __init__ ( self , array ) :
self . current = 0
self . array = array
2023-03-09 19:58:08 +01:00
def hasNext ( self ) :
2023-03-09 22:32:28 +01:00
return ( self . current < len ( self . array ) )
2023-03-09 19:58:08 +01:00
def next ( self ) :
2023-03-09 22:32:28 +01:00
def _hx_local_3 ( ) :
def _hx_local_2 ( ) :
_hx_local_0 = self
_hx_local_1 = _hx_local_0 . current
_hx_local_0 . current = ( _hx_local_1 + 1 )
return _hx_local_1
return _hx_AnonObject ( { ' value ' : python_internal_ArrayImpl . _get ( self . array , self . current ) , ' key ' : _hx_local_2 ( ) } )
return _hx_local_3 ( )
2023-03-09 19:58:08 +01:00
class python_Boot :
_hx_class_name = " python.Boot "
__slots__ = ( )
2023-03-30 19:51:32 +02:00
_hx_statics = [ " keywords " , " toString1 " , " fields " , " simpleField " , " hasField " , " field " , " getInstanceFields " , " getSuperClass " , " getClassFields " , " prefixLength " , " unhandleKeywords " ]
2023-03-09 19:58:08 +01:00
@staticmethod
def toString1 ( o , s ) :
if ( o is None ) :
return " null "
if isinstance ( o , str ) :
return o
if ( s is None ) :
s = " "
if ( len ( s ) > = 5 ) :
return " <...> "
if isinstance ( o , bool ) :
if o :
return " true "
else :
return " false "
if ( isinstance ( o , int ) and ( not isinstance ( o , bool ) ) ) :
return str ( o )
if isinstance ( o , float ) :
try :
if ( o == int ( o ) ) :
return str ( Math . floor ( ( o + 0.5 ) ) )
else :
return str ( o )
except BaseException as _g :
None
return str ( o )
if isinstance ( o , list ) :
o1 = o
l = len ( o1 )
st = " [ "
s = ( ( " null " if s is None else s ) + " \t " )
_g = 0
_g1 = l
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
prefix = " "
if ( i > 0 ) :
prefix = " , "
st = ( ( " null " if st is None else st ) + HxOverrides . stringOrNull ( ( ( ( " null " if prefix is None else prefix ) + HxOverrides . stringOrNull ( python_Boot . toString1 ( ( o1 [ i ] if i > = 0 and i < len ( o1 ) else None ) , s ) ) ) ) ) )
st = ( ( " null " if st is None else st ) + " ] " )
return st
try :
if hasattr ( o , " toString " ) :
return o . toString ( )
except BaseException as _g :
None
if hasattr ( o , " __class__ " ) :
if isinstance ( o , _hx_AnonObject ) :
toStr = None
try :
fields = python_Boot . fields ( o )
_g = [ ]
_g1 = 0
while ( _g1 < len ( fields ) ) :
f = ( fields [ _g1 ] if _g1 > = 0 and _g1 < len ( fields ) else None )
_g1 = ( _g1 + 1 )
x = ( ( ( " " + ( " null " if f is None else f ) ) + " : " ) + HxOverrides . stringOrNull ( python_Boot . toString1 ( python_Boot . simpleField ( o , f ) , ( ( " null " if s is None else s ) + " \t " ) ) ) )
_g . append ( x )
fieldsStr = _g
toStr = ( ( " { " + HxOverrides . stringOrNull ( " , " . join ( [ x1 for x1 in fieldsStr ] ) ) ) + " } " )
except BaseException as _g :
None
return " { ... } "
if ( toStr is None ) :
return " { ... } "
else :
return toStr
if isinstance ( o , Enum ) :
o1 = o
l = len ( o1 . params )
hasParams = ( l > 0 )
if hasParams :
paramsStr = " "
_g = 0
_g1 = l
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
prefix = " "
if ( i > 0 ) :
prefix = " , "
paramsStr = ( ( " null " if paramsStr is None else paramsStr ) + HxOverrides . stringOrNull ( ( ( ( " null " if prefix is None else prefix ) + HxOverrides . stringOrNull ( python_Boot . toString1 ( o1 . params [ i ] , s ) ) ) ) ) )
return ( ( ( HxOverrides . stringOrNull ( o1 . tag ) + " ( " ) + ( " null " if paramsStr is None else paramsStr ) ) + " ) " )
else :
return o1 . tag
if hasattr ( o , " _hx_class_name " ) :
if ( o . __class__ . __name__ != " type " ) :
fields = python_Boot . getInstanceFields ( o )
_g = [ ]
_g1 = 0
while ( _g1 < len ( fields ) ) :
f = ( fields [ _g1 ] if _g1 > = 0 and _g1 < len ( fields ) else None )
_g1 = ( _g1 + 1 )
x = ( ( ( " " + ( " null " if f is None else f ) ) + " : " ) + HxOverrides . stringOrNull ( python_Boot . toString1 ( python_Boot . simpleField ( o , f ) , ( ( " null " if s is None else s ) + " \t " ) ) ) )
_g . append ( x )
fieldsStr = _g
toStr = ( ( ( HxOverrides . stringOrNull ( o . _hx_class_name ) + " ( " ) + HxOverrides . stringOrNull ( " , " . join ( [ x1 for x1 in fieldsStr ] ) ) ) + " ) " )
return toStr
else :
fields = python_Boot . getClassFields ( o )
_g = [ ]
_g1 = 0
while ( _g1 < len ( fields ) ) :
f = ( fields [ _g1 ] if _g1 > = 0 and _g1 < len ( fields ) else None )
_g1 = ( _g1 + 1 )
x = ( ( ( " " + ( " null " if f is None else f ) ) + " : " ) + HxOverrides . stringOrNull ( python_Boot . toString1 ( python_Boot . simpleField ( o , f ) , ( ( " null " if s is None else s ) + " \t " ) ) ) )
_g . append ( x )
fieldsStr = _g
toStr = ( ( ( ( " # " + HxOverrides . stringOrNull ( o . _hx_class_name ) ) + " ( " ) + HxOverrides . stringOrNull ( " , " . join ( [ x1 for x1 in fieldsStr ] ) ) ) + " ) " )
return toStr
if ( ( type ( o ) == type ) and ( o == str ) ) :
return " #String "
if ( ( type ( o ) == type ) and ( o == list ) ) :
return " #Array "
if callable ( o ) :
return " function "
try :
if hasattr ( o , " __repr__ " ) :
return o . __repr__ ( )
except BaseException as _g :
None
if hasattr ( o , " __str__ " ) :
return o . __str__ ( [ ] )
if hasattr ( o , " __name__ " ) :
return o . __name__
return " ??? "
else :
return str ( o )
@staticmethod
def fields ( o ) :
a = [ ]
if ( o is not None ) :
if hasattr ( o , " _hx_fields " ) :
fields = o . _hx_fields
if ( fields is not None ) :
return list ( fields )
if isinstance ( o , _hx_AnonObject ) :
d = o . __dict__
keys = d . keys ( )
handler = python_Boot . unhandleKeywords
for k in keys :
if ( k != ' _hx_disable_getattr ' ) :
a . append ( handler ( k ) )
elif hasattr ( o , " __dict__ " ) :
d = o . __dict__
keys1 = d . keys ( )
for k in keys1 :
a . append ( k )
return a
@staticmethod
def simpleField ( o , field ) :
if ( field is None ) :
return None
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
2023-03-30 19:51:32 +02:00
@staticmethod
def hasField ( o , field ) :
if isinstance ( o , _hx_AnonObject ) :
return o . _hx_hasattr ( field )
return hasattr ( o , ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) ) )
2023-03-09 19:58:08 +01:00
@staticmethod
def field ( o , field ) :
if ( field is None ) :
return None
if isinstance ( o , str ) :
field1 = field
_hx_local_0 = len ( field1 )
if ( _hx_local_0 == 10 ) :
if ( field1 == " charCodeAt " ) :
return python_internal_MethodClosure ( o , HxString . charCodeAt )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_0 == 11 ) :
if ( field1 == " lastIndexOf " ) :
return python_internal_MethodClosure ( o , HxString . lastIndexOf )
elif ( field1 == " toLowerCase " ) :
return python_internal_MethodClosure ( o , HxString . toLowerCase )
elif ( field1 == " toUpperCase " ) :
return python_internal_MethodClosure ( o , HxString . toUpperCase )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_0 == 9 ) :
if ( field1 == " substring " ) :
return python_internal_MethodClosure ( o , HxString . substring )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_0 == 5 ) :
if ( field1 == " split " ) :
return python_internal_MethodClosure ( o , HxString . split )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_0 == 7 ) :
if ( field1 == " indexOf " ) :
return python_internal_MethodClosure ( o , HxString . indexOf )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_0 == 8 ) :
if ( field1 == " toString " ) :
return python_internal_MethodClosure ( o , HxString . toString )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_0 == 6 ) :
if ( field1 == " charAt " ) :
return python_internal_MethodClosure ( o , HxString . charAt )
elif ( field1 == " length " ) :
return len ( o )
elif ( field1 == " substr " ) :
return python_internal_MethodClosure ( o , HxString . substr )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif isinstance ( o , list ) :
field1 = field
_hx_local_1 = len ( field1 )
if ( _hx_local_1 == 11 ) :
if ( field1 == " lastIndexOf " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . lastIndexOf )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_1 == 4 ) :
if ( field1 == " copy " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . copy )
elif ( field1 == " join " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . join )
elif ( field1 == " push " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . push )
elif ( field1 == " sort " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . sort )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_1 == 5 ) :
if ( field1 == " shift " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . shift )
elif ( field1 == " slice " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . slice )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_1 == 7 ) :
if ( field1 == " indexOf " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . indexOf )
elif ( field1 == " reverse " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . reverse )
elif ( field1 == " unshift " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . unshift )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_1 == 3 ) :
if ( field1 == " map " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . map )
elif ( field1 == " pop " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . pop )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_1 == 8 ) :
if ( field1 == " contains " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . contains )
elif ( field1 == " iterator " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . iterator )
elif ( field1 == " toString " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . toString )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_1 == 16 ) :
if ( field1 == " keyValueIterator " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . keyValueIterator )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
elif ( _hx_local_1 == 6 ) :
if ( field1 == " concat " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . concat )
elif ( field1 == " filter " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . filter )
elif ( field1 == " insert " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . insert )
elif ( field1 == " length " ) :
return len ( o )
elif ( field1 == " remove " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . remove )
elif ( field1 == " splice " ) :
return python_internal_MethodClosure ( o , python_internal_ArrayImpl . splice )
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
else :
field1 = ( ( " _hx_ " + field ) if ( ( field in python_Boot . keywords ) ) else ( ( " _hx_ " + field ) if ( ( ( ( ( len ( field ) > 2 ) and ( ( ord ( field [ 0 ] ) == 95 ) ) ) and ( ( ord ( field [ 1 ] ) == 95 ) ) ) and ( ( ord ( field [ ( len ( field ) - 1 ) ] ) != 95 ) ) ) ) else field ) )
if hasattr ( o , field1 ) :
return getattr ( o , field1 )
else :
return None
@staticmethod
def getInstanceFields ( c ) :
f = ( list ( c . _hx_fields ) if ( hasattr ( c , " _hx_fields " ) ) else [ ] )
if hasattr ( c , " _hx_methods " ) :
f = ( f + c . _hx_methods )
sc = python_Boot . getSuperClass ( c )
if ( sc is None ) :
return f
else :
scArr = python_Boot . getInstanceFields ( sc )
scMap = set ( scArr )
_g = 0
while ( _g < len ( f ) ) :
f1 = ( f [ _g ] if _g > = 0 and _g < len ( f ) else None )
_g = ( _g + 1 )
if ( not ( f1 in scMap ) ) :
scArr . append ( f1 )
return scArr
@staticmethod
def getSuperClass ( c ) :
if ( c is None ) :
return None
try :
if hasattr ( c , " _hx_super " ) :
return c . _hx_super
return None
except BaseException as _g :
None
return None
@staticmethod
def getClassFields ( c ) :
if hasattr ( c , " _hx_statics " ) :
x = c . _hx_statics
return list ( x )
else :
return [ ]
@staticmethod
def unhandleKeywords ( name ) :
if ( HxString . substr ( name , 0 , python_Boot . prefixLength ) == " _hx_ " ) :
real = HxString . substr ( name , python_Boot . prefixLength , None )
if ( real in python_Boot . keywords ) :
return real
return name
class python_HaxeIterator :
_hx_class_name = " python.HaxeIterator "
__slots__ = ( " it " , " x " , " has " , " checked " )
_hx_fields = [ " it " , " x " , " has " , " checked " ]
_hx_methods = [ " next " , " hasNext " ]
def __init__ ( self , it ) :
self . checked = False
self . has = False
self . x = None
self . it = it
def next ( self ) :
if ( not self . checked ) :
self . hasNext ( )
self . checked = False
return self . x
def hasNext ( self ) :
if ( not self . checked ) :
try :
self . x = self . it . __next__ ( )
self . has = True
except BaseException as _g :
None
if Std . isOfType ( haxe_Exception . caught ( _g ) . unwrap ( ) , StopIteration ) :
self . has = False
self . x = None
else :
raise _g
self . checked = True
return self . has
class python_internal_ArrayImpl :
_hx_class_name = " python.internal.ArrayImpl "
__slots__ = ( )
2023-12-06 12:55:08 +01:00
_hx_statics = [ " get_length " , " concat " , " copy " , " iterator " , " keyValueIterator " , " indexOf " , " lastIndexOf " , " join " , " toString " , " pop " , " push " , " unshift " , " remove " , " contains " , " shift " , " slice " , " sort " , " splice " , " map " , " filter " , " insert " , " reverse " , " _get " ]
@staticmethod
def get_length ( x ) :
return len ( x )
2023-03-09 19:58:08 +01:00
@staticmethod
def concat ( a1 , a2 ) :
return ( a1 + a2 )
@staticmethod
def copy ( x ) :
return list ( x )
@staticmethod
def iterator ( x ) :
return python_HaxeIterator ( x . __iter__ ( ) )
@staticmethod
def keyValueIterator ( x ) :
return haxe_iterators_ArrayKeyValueIterator ( x )
@staticmethod
def indexOf ( a , x , fromIndex = None ) :
_hx_len = len ( a )
l = ( 0 if ( ( fromIndex is None ) ) else ( ( _hx_len + fromIndex ) if ( ( fromIndex < 0 ) ) else fromIndex ) )
if ( l < 0 ) :
l = 0
_g = l
_g1 = _hx_len
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
if HxOverrides . eq ( a [ i ] , x ) :
return i
return - 1
@staticmethod
def lastIndexOf ( a , x , fromIndex = None ) :
_hx_len = len ( a )
l = ( _hx_len if ( ( fromIndex is None ) ) else ( ( ( _hx_len + fromIndex ) + 1 ) if ( ( fromIndex < 0 ) ) else ( fromIndex + 1 ) ) )
if ( l > _hx_len ) :
l = _hx_len
while True :
l = ( l - 1 )
tmp = l
if ( not ( ( tmp > - 1 ) ) ) :
break
if HxOverrides . eq ( a [ l ] , x ) :
return l
return - 1
@staticmethod
def join ( x , sep ) :
return sep . join ( [ python_Boot . toString1 ( x1 , ' ' ) for x1 in x ] )
@staticmethod
def toString ( x ) :
return ( ( " [ " + HxOverrides . stringOrNull ( " , " . join ( [ python_Boot . toString1 ( x1 , ' ' ) for x1 in x ] ) ) ) + " ] " )
@staticmethod
def pop ( x ) :
if ( len ( x ) == 0 ) :
return None
else :
return x . pop ( )
@staticmethod
def push ( x , e ) :
x . append ( e )
return len ( x )
@staticmethod
def unshift ( x , e ) :
x . insert ( 0 , e )
@staticmethod
def remove ( x , e ) :
try :
x . remove ( e )
return True
except BaseException as _g :
None
return False
@staticmethod
def contains ( x , e ) :
return ( e in x )
@staticmethod
def shift ( x ) :
if ( len ( x ) == 0 ) :
return None
return x . pop ( 0 )
@staticmethod
def slice ( x , pos , end = None ) :
return x [ pos : end ]
@staticmethod
def sort ( x , f ) :
x . sort ( key = python_lib_Functools . cmp_to_key ( f ) )
@staticmethod
def splice ( x , pos , _hx_len ) :
if ( pos < 0 ) :
pos = ( len ( x ) + pos )
if ( pos < 0 ) :
pos = 0
res = x [ pos : ( pos + _hx_len ) ]
del x [ pos : ( pos + _hx_len ) ]
return res
@staticmethod
def map ( x , f ) :
return list ( map ( f , x ) )
@staticmethod
def filter ( x , f ) :
return list ( filter ( f , x ) )
@staticmethod
def insert ( a , pos , x ) :
a . insert ( pos , x )
@staticmethod
def reverse ( a ) :
a . reverse ( )
@staticmethod
def _get ( x , idx ) :
if ( ( idx > - 1 ) and ( ( idx < len ( x ) ) ) ) :
return x [ idx ]
else :
return None
class HxOverrides :
_hx_class_name = " HxOverrides "
__slots__ = ( )
2023-12-06 12:55:08 +01:00
_hx_statics = [ " eq " , " stringOrNull " , " filter " , " length " , " arrayGet " ]
2023-03-09 19:58:08 +01:00
@staticmethod
def eq ( a , b ) :
if ( isinstance ( a , list ) or isinstance ( b , list ) ) :
return a is b
return ( a == b )
@staticmethod
2023-03-09 22:32:28 +01:00
def stringOrNull ( s ) :
if ( s is None ) :
return " null "
else :
return s
2023-03-09 19:58:08 +01:00
2023-03-24 17:10:30 +01:00
@staticmethod
2023-12-06 12:55:08 +01:00
def filter ( x , f ) :
2023-03-24 17:10:30 +01:00
if isinstance ( x , list ) :
2023-12-06 12:55:08 +01:00
return list ( filter ( f , x ) )
return x . filter ( f )
@staticmethod
def length ( x ) :
if isinstance ( x , str ) :
return len ( x )
elif isinstance ( x , list ) :
return len ( x )
return x . length
2023-03-24 17:10:30 +01:00
2023-03-09 19:58:08 +01:00
@staticmethod
def arrayGet ( a , i ) :
if isinstance ( a , list ) :
x = a
if ( ( i > - 1 ) and ( ( i < len ( x ) ) ) ) :
return x [ i ]
else :
return None
else :
return a [ i ]
class python_internal_MethodClosure :
_hx_class_name = " python.internal.MethodClosure "
__slots__ = ( " obj " , " func " )
_hx_fields = [ " obj " , " func " ]
_hx_methods = [ " __call__ " ]
def __init__ ( self , obj , func ) :
self . obj = obj
self . func = func
def __call__ ( self , * args ) :
return self . func ( self . obj , * args )
class HxString :
_hx_class_name = " HxString "
__slots__ = ( )
2023-12-06 12:55:08 +01:00
_hx_statics = [ " split " , " charCodeAt " , " charAt " , " lastIndexOf " , " toUpperCase " , " toLowerCase " , " indexOf " , " indexOfImpl " , " toString " , " get_length " , " substring " , " substr " ]
2023-03-09 19:58:08 +01:00
@staticmethod
def split ( s , d ) :
if ( d == " " ) :
return list ( s )
else :
return s . split ( d )
@staticmethod
def charCodeAt ( s , index ) :
if ( ( ( ( s is None ) or ( ( len ( s ) == 0 ) ) ) or ( ( index < 0 ) ) ) or ( ( index > = len ( s ) ) ) ) :
return None
else :
return ord ( s [ index ] )
@staticmethod
def charAt ( s , index ) :
if ( ( index < 0 ) or ( ( index > = len ( s ) ) ) ) :
return " "
else :
return s [ index ]
@staticmethod
def lastIndexOf ( s , _hx_str , startIndex = None ) :
if ( startIndex is None ) :
return s . rfind ( _hx_str , 0 , len ( s ) )
elif ( _hx_str == " " ) :
length = len ( s )
if ( startIndex < 0 ) :
startIndex = ( length + startIndex )
if ( startIndex < 0 ) :
startIndex = 0
if ( startIndex > length ) :
return length
else :
return startIndex
else :
i = s . rfind ( _hx_str , 0 , ( startIndex + 1 ) )
startLeft = ( max ( 0 , ( ( startIndex + 1 ) - len ( _hx_str ) ) ) if ( ( i == - 1 ) ) else ( i + 1 ) )
check = s . find ( _hx_str , startLeft , len ( s ) )
if ( ( check > i ) and ( ( check < = startIndex ) ) ) :
return check
else :
return i
@staticmethod
def toUpperCase ( s ) :
return s . upper ( )
@staticmethod
def toLowerCase ( s ) :
return s . lower ( )
@staticmethod
def indexOf ( s , _hx_str , startIndex = None ) :
if ( startIndex is None ) :
return s . find ( _hx_str )
else :
return HxString . indexOfImpl ( s , _hx_str , startIndex )
@staticmethod
def indexOfImpl ( s , _hx_str , startIndex ) :
if ( _hx_str == " " ) :
length = len ( s )
if ( startIndex < 0 ) :
startIndex = ( length + startIndex )
if ( startIndex < 0 ) :
startIndex = 0
if ( startIndex > length ) :
return length
else :
return startIndex
return s . find ( _hx_str , startIndex )
@staticmethod
def toString ( s ) :
return s
2023-12-06 12:55:08 +01:00
@staticmethod
def get_length ( s ) :
return len ( s )
2023-03-09 19:58:08 +01:00
@staticmethod
def substring ( s , startIndex , endIndex = None ) :
if ( startIndex < 0 ) :
startIndex = 0
if ( endIndex is None ) :
return s [ startIndex : ]
else :
if ( endIndex < 0 ) :
endIndex = 0
if ( endIndex < startIndex ) :
return s [ endIndex : startIndex ]
else :
return s [ startIndex : endIndex ]
@staticmethod
def substr ( s , startIndex , _hx_len = None ) :
if ( _hx_len is None ) :
return s [ startIndex : ]
else :
if ( _hx_len == 0 ) :
return " "
if ( startIndex < 0 ) :
startIndex = ( len ( s ) + startIndex )
if ( startIndex < 0 ) :
startIndex = 0
return s [ startIndex : ( startIndex + _hx_len ) ]
2023-12-06 12:55:08 +01:00
class xrfragment_Filter :
_hx_class_name = " xrfragment.Filter "
__slots__ = ( " str " , " q " )
_hx_fields = [ " str " , " q " ]
2023-09-15 19:43:11 +02:00
_hx_methods = [ " toObject " , " get " , " parse " , " test " , " testProperty " ]
2023-03-09 19:58:08 +01:00
def __init__ ( self , _hx_str ) :
self . q = _hx_AnonObject ( { } )
self . str = " "
if ( _hx_str is not None ) :
self . parse ( _hx_str )
def toObject ( self ) :
2023-12-06 12:55:08 +01:00
return Reflect . copy ( self . q )
2023-03-09 19:58:08 +01:00
2023-04-14 15:19:52 +02:00
def get ( self ) :
2023-12-06 12:55:08 +01:00
return Reflect . copy ( self . q )
2023-04-14 15:19:52 +02:00
2023-06-27 09:43:10 +02:00
def parse ( self , _hx_str ) :
2023-03-09 19:58:08 +01:00
token = _hx_str . split ( " " )
q = _hx_AnonObject ( { } )
2023-03-21 17:57:54 +01:00
def _hx_local_0 ( _hx_str , prefix = None ) :
2023-03-09 19:58:08 +01:00
if ( prefix is None ) :
prefix = " "
2023-03-21 17:57:54 +01:00
_hx_str = StringTools . trim ( _hx_str )
2023-12-06 12:55:08 +01:00
k = HxOverrides . arrayGet ( _hx_str . split ( " = " ) , 0 )
v = HxOverrides . arrayGet ( _hx_str . split ( " = " ) , 1 )
2023-03-24 17:10:30 +01:00
_hx_filter = _hx_AnonObject ( { } )
if Reflect . field ( q , ( ( " null " if prefix is None else prefix ) + ( " null " if k is None else k ) ) ) :
_hx_filter = Reflect . field ( q , ( ( " null " if prefix is None else prefix ) + ( " null " if k is None else k ) ) )
2023-12-06 12:55:08 +01:00
_this = xrfragment_XRF . isProp
2023-03-21 17:57:54 +01:00
_this . matchObj = python_lib_Re . search ( _this . pattern , _hx_str )
if ( _this . matchObj is not None ) :
oper = " "
2023-03-09 19:58:08 +01:00
startIndex = None
if ( ( ( _hx_str . find ( " > " ) if ( ( startIndex is None ) ) else HxString . indexOfImpl ( _hx_str , " > " , startIndex ) ) ) != - 1 ) :
2023-03-21 17:57:54 +01:00
oper = " > "
2023-03-09 19:58:08 +01:00
startIndex = None
if ( ( ( _hx_str . find ( " < " ) if ( ( startIndex is None ) ) else HxString . indexOfImpl ( _hx_str , " < " , startIndex ) ) ) != - 1 ) :
2023-03-21 17:57:54 +01:00
oper = " < "
2023-12-06 12:55:08 +01:00
_this = xrfragment_XRF . isExclude
2023-03-24 17:10:30 +01:00
_this . matchObj = python_lib_Re . search ( _this . pattern , k )
if ( _this . matchObj is not None ) :
k = HxString . substr ( k , 1 , None )
2023-12-06 12:55:08 +01:00
v = HxString . substr ( v , len ( oper ) , None )
2023-03-24 17:10:30 +01:00
if ( len ( oper ) == 0 ) :
oper = " = "
2023-09-15 19:43:11 +02:00
rule = _hx_AnonObject ( { } )
2023-12-06 12:55:08 +01:00
_this = xrfragment_XRF . isNumber
2023-09-15 19:43:11 +02:00
_this . matchObj = python_lib_Re . search ( _this . pattern , v )
2023-03-24 17:10:30 +01:00
if ( _this . matchObj is not None ) :
2023-09-15 19:43:11 +02:00
value = Std . parseFloat ( v )
setattr ( rule , ( ( " _hx_ " + oper ) if ( ( oper in python_Boot . keywords ) ) else ( ( " _hx_ " + oper ) if ( ( ( ( ( len ( oper ) > 2 ) and ( ( ord ( oper [ 0 ] ) == 95 ) ) ) and ( ( ord ( oper [ 1 ] ) == 95 ) ) ) and ( ( ord ( oper [ ( len ( oper ) - 1 ) ] ) != 95 ) ) ) ) else oper ) ) , value )
2023-03-09 19:58:08 +01:00
else :
2023-09-15 19:43:11 +02:00
setattr ( rule , ( ( " _hx_ " + oper ) if ( ( oper in python_Boot . keywords ) ) else ( ( " _hx_ " + oper ) if ( ( ( ( ( len ( oper ) > 2 ) and ( ( ord ( oper [ 0 ] ) == 95 ) ) ) and ( ( ord ( oper [ 1 ] ) == 95 ) ) ) and ( ( ord ( oper [ ( len ( oper ) - 1 ) ] ) != 95 ) ) ) ) else oper ) ) , v )
2023-12-06 12:55:08 +01:00
setattr ( q , ( ( " _hx_ " + " expr " ) if ( ( " expr " in python_Boot . keywords ) ) else ( ( " _hx_ " + " expr " ) if ( ( ( ( ( len ( " expr " ) > 2 ) and ( ( ord ( " expr " [ 0 ] ) == 95 ) ) ) and ( ( ord ( " expr " [ 1 ] ) == 95 ) ) ) and ( ( ord ( " expr " [ ( len ( " expr " ) - 1 ) ] ) != 95 ) ) ) ) else " expr " ) ) , rule )
_this = xrfragment_XRF . isDeep
_this . matchObj = python_lib_Re . search ( _this . pattern , _hx_str )
value = ( ( Reflect . field ( k . split ( " * " ) , " length " ) - 1 ) if ( ( _this . matchObj is not None ) ) else 0 )
setattr ( q , ( ( " _hx_ " + " deep " ) if ( ( " deep " in python_Boot . keywords ) ) else ( ( " _hx_ " + " deep " ) if ( ( ( ( ( len ( " deep " ) > 2 ) and ( ( ord ( " deep " [ 0 ] ) == 95 ) ) ) and ( ( ord ( " deep " [ 1 ] ) == 95 ) ) ) and ( ( ord ( " deep " [ ( len ( " deep " ) - 1 ) ] ) != 95 ) ) ) ) else " deep " ) ) , value )
_this = xrfragment_XRF . isExclude
_this . matchObj = python_lib_Re . search ( _this . pattern , _hx_str )
value = ( False if ( ( _this . matchObj is not None ) ) else True )
setattr ( q , ( ( " _hx_ " + " show " ) if ( ( " show " in python_Boot . keywords ) ) else ( ( " _hx_ " + " show " ) if ( ( ( ( ( len ( " show " ) > 2 ) and ( ( ord ( " show " [ 0 ] ) == 95 ) ) ) and ( ( ord ( " show " [ 1 ] ) == 95 ) ) ) and ( ( ord ( " show " [ ( len ( " show " ) - 1 ) ] ) != 95 ) ) ) ) else " show " ) ) , value )
value = xrfragment_XRF . operators . replace ( k , " " )
setattr ( q , ( ( " _hx_ " + " key " ) if ( ( " key " in python_Boot . keywords ) ) else ( ( " _hx_ " + " key " ) if ( ( ( ( ( len ( " key " ) > 2 ) and ( ( ord ( " key " [ 0 ] ) == 95 ) ) ) and ( ( ord ( " key " [ 1 ] ) == 95 ) ) ) and ( ( ord ( " key " [ ( len ( " key " ) - 1 ) ] ) != 95 ) ) ) ) else " key " ) ) , value )
setattr ( q , ( ( " _hx_ " + " value " ) if ( ( " value " in python_Boot . keywords ) ) else ( ( " _hx_ " + " value " ) if ( ( ( ( ( len ( " value " ) > 2 ) and ( ( ord ( " value " [ 0 ] ) == 95 ) ) ) and ( ( ord ( " value " [ 1 ] ) == 95 ) ) ) and ( ( ord ( " value " [ ( len ( " value " ) - 1 ) ] ) != 95 ) ) ) ) else " value " ) ) , v )
2023-03-21 17:57:54 +01:00
process = _hx_local_0
2023-03-09 19:58:08 +01:00
_g = 0
2023-03-21 17:57:54 +01:00
_g1 = len ( token )
2023-03-09 19:58:08 +01:00
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
2023-09-15 19:43:11 +02:00
process ( ( token [ i ] if i > = 0 and i < len ( token ) else None ) )
2023-04-14 15:19:52 +02:00
def _hx_local_2 ( ) :
def _hx_local_1 ( ) :
self . q = q
return self . q
return _hx_local_1 ( )
return _hx_local_2 ( )
2023-03-09 19:58:08 +01:00
2023-03-24 17:10:30 +01:00
def test ( self , obj = None ) :
qualify = False
_g = 0
_g1 = python_Boot . fields ( obj )
while ( _g < len ( _g1 ) ) :
k = ( _g1 [ _g ] if _g > = 0 and _g < len ( _g1 ) else None )
_g = ( _g + 1 )
v = Std . string ( Reflect . field ( obj , k ) )
if self . testProperty ( k , v ) :
qualify = True
_g = 0
_g1 = python_Boot . fields ( obj )
while ( _g < len ( _g1 ) ) :
k = ( _g1 [ _g ] if _g > = 0 and _g < len ( _g1 ) else None )
_g = ( _g + 1 )
v = Std . string ( Reflect . field ( obj , k ) )
if self . testProperty ( k , v , True ) :
qualify = False
return qualify
def testProperty ( self , property , value , exclude = None ) :
2023-03-21 17:57:54 +01:00
conds = 0
fails = 0
qualify = 0
def _hx_local_2 ( expr ) :
2024-02-01 20:10:41 +01:00
nonlocal conds
2024-02-02 12:13:07 +01:00
nonlocal fails
2023-03-21 17:57:54 +01:00
conds = ( conds + 1 )
fails = ( fails + ( 0 if expr else 1 ) )
return expr
testprop = _hx_local_2
if ( Reflect . field ( self . q , value ) is not None ) :
v = Reflect . field ( self . q , value )
if ( Reflect . field ( v , property ) is not None ) :
return Reflect . field ( v , property )
2023-12-06 12:55:08 +01:00
if Reflect . field ( self . q , " expr " ) :
f = Reflect . field ( self . q , " expr " )
if ( not Reflect . field ( self . q , " show " ) ) :
if ( ( ( Reflect . field ( f , " != " ) is not None ) and testprop ( ( Std . string ( value ) == Std . string ( Reflect . field ( f , " != " ) ) ) ) ) and exclude ) :
qualify = ( qualify + 1 )
else :
if ( ( Reflect . field ( f , " * " ) is not None ) and testprop ( ( Std . parseFloat ( value ) is not None ) ) ) :
qualify = ( qualify + 1 )
if ( ( Reflect . field ( f , " > " ) is not None ) and testprop ( ( Std . parseFloat ( value ) > = Std . parseFloat ( Reflect . field ( f , " > " ) ) ) ) ) :
qualify = ( qualify + 1 )
if ( ( Reflect . field ( f , " < " ) is not None ) and testprop ( ( Std . parseFloat ( value ) < = Std . parseFloat ( Reflect . field ( f , " < " ) ) ) ) ) :
qualify = ( qualify + 1 )
if ( ( Reflect . field ( f , " = " ) is not None ) and ( ( testprop ( ( value == Reflect . field ( f , " = " ) ) ) or testprop ( ( Std . parseFloat ( value ) == Std . parseFloat ( Reflect . field ( f , " = " ) ) ) ) ) ) ) :
qualify = ( qualify + 1 )
2023-03-21 17:57:54 +01:00
return ( qualify > 0 )
2023-03-09 19:58:08 +01:00
2023-03-10 18:49:16 +01:00
2023-12-06 12:55:08 +01:00
class xrfragment_Parser :
_hx_class_name = " xrfragment.Parser "
__slots__ = ( )
_hx_statics = [ " error " , " debug " , " parse " ]
@staticmethod
def parse ( key , value , store , index = None ) :
Frag = haxe_ds_StringMap ( )
Frag . h [ " # " ] = ( ( xrfragment_XRF . ASSET | xrfragment_XRF . T_PREDEFINED_VIEW ) | xrfragment_XRF . PV_EXECUTE )
Frag . h [ " src " ] = ( xrfragment_XRF . ASSET | xrfragment_XRF . T_URL )
Frag . h [ " href " ] = ( ( xrfragment_XRF . ASSET | xrfragment_XRF . T_URL ) | xrfragment_XRF . T_PREDEFINED_VIEW )
Frag . h [ " tag " ] = ( xrfragment_XRF . ASSET | xrfragment_XRF . T_STRING )
2024-02-01 20:10:41 +01:00
Frag . h [ " pos " ] = ( ( ( ( xrfragment_XRF . PV_OVERRIDE | xrfragment_XRF . T_VECTOR3 ) | xrfragment_XRF . T_STRING ) | xrfragment_XRF . METADATA ) | xrfragment_XRF . NAVIGATOR )
2023-12-06 12:55:08 +01:00
Frag . h [ " rot " ] = ( ( ( ( xrfragment_XRF . QUERY_OPERATOR | xrfragment_XRF . PV_OVERRIDE ) | xrfragment_XRF . T_VECTOR3 ) | xrfragment_XRF . METADATA ) | xrfragment_XRF . NAVIGATOR )
2024-02-01 20:10:41 +01:00
Frag . h [ " t " ] = ( ( ( ( ( ( xrfragment_XRF . ASSET | xrfragment_XRF . PV_OVERRIDE ) | xrfragment_XRF . T_FLOAT ) | xrfragment_XRF . T_VECTOR2 ) | xrfragment_XRF . T_MEDIAFRAG ) | xrfragment_XRF . NAVIGATOR ) | xrfragment_XRF . METADATA )
2024-02-02 12:13:07 +01:00
Frag . h [ " xywh " ] = ( ( ( ( ( ( xrfragment_XRF . ASSET | xrfragment_XRF . PV_OVERRIDE ) | xrfragment_XRF . T_FLOAT ) | xrfragment_XRF . T_VECTOR2 ) | xrfragment_XRF . T_MEDIAFRAG ) | xrfragment_XRF . NAVIGATOR ) | xrfragment_XRF . METADATA )
2023-12-06 12:55:08 +01:00
Frag . h [ " namespace " ] = ( xrfragment_XRF . ASSET | xrfragment_XRF . T_STRING )
Frag . h [ " SPDX " ] = ( xrfragment_XRF . ASSET | xrfragment_XRF . T_STRING )
Frag . h [ " unit " ] = ( xrfragment_XRF . ASSET | xrfragment_XRF . T_STRING )
Frag . h [ " description " ] = ( xrfragment_XRF . ASSET | xrfragment_XRF . T_STRING )
Frag . h [ " session " ] = ( ( ( ( ( xrfragment_XRF . ASSET | xrfragment_XRF . T_URL ) | xrfragment_XRF . PV_OVERRIDE ) | xrfragment_XRF . NAVIGATOR ) | xrfragment_XRF . METADATA ) | xrfragment_XRF . PROMPT )
keyStripped = xrfragment_XRF . operators . replace ( key , " " )
isPVDynamic = ( ( len ( key ) > 0 ) and ( not ( key in Frag . h ) ) )
isPVDefault = ( ( ( len ( value ) == 0 ) and ( ( len ( key ) > 0 ) ) ) and ( ( key == " # " ) ) )
if isPVDynamic :
v = xrfragment_XRF ( key , ( xrfragment_XRF . PV_EXECUTE | xrfragment_XRF . NAVIGATOR ) , index )
v . validate ( value )
2024-02-01 20:10:41 +01:00
v . flags = xrfragment_XRF . set ( xrfragment_XRF . T_DYNAMIC , v . flags )
2023-12-06 12:55:08 +01:00
setattr ( store , ( ( " _hx_ " + keyStripped ) if ( ( keyStripped in python_Boot . keywords ) ) else ( ( " _hx_ " + keyStripped ) if ( ( ( ( ( len ( keyStripped ) > 2 ) and ( ( ord ( keyStripped [ 0 ] ) == 95 ) ) ) and ( ( ord ( keyStripped [ 1 ] ) == 95 ) ) ) and ( ( ord ( keyStripped [ ( len ( keyStripped ) - 1 ) ] ) != 95 ) ) ) ) else keyStripped ) ) , v )
return True
v = xrfragment_XRF ( key , Frag . h . get ( key , None ) , index )
if ( key in Frag . h ) :
if ( not v . validate ( value ) ) :
print ( str ( ( ( ( ( " ⚠ fragment ' " + ( " null " if key is None else key ) ) + " ' has incompatible value ( " ) + ( " null " if value is None else value ) ) + " ) " ) ) )
return False
setattr ( store , ( ( " _hx_ " + keyStripped ) if ( ( keyStripped in python_Boot . keywords ) ) else ( ( " _hx_ " + keyStripped ) if ( ( ( ( ( len ( keyStripped ) > 2 ) and ( ( ord ( keyStripped [ 0 ] ) == 95 ) ) ) and ( ( ord ( keyStripped [ 1 ] ) == 95 ) ) ) and ( ( ord ( keyStripped [ ( len ( keyStripped ) - 1 ) ] ) != 95 ) ) ) ) else keyStripped ) ) , v )
if xrfragment_Parser . debug :
print ( str ( ( ( ( " ✔ " + ( " null " if key is None else key ) ) + " : " ) + HxOverrides . stringOrNull ( v . string ) ) ) )
else :
if Std . isOfType ( value , str ) :
v . guessType ( v , value )
v . noXRF = True
setattr ( store , ( ( " _hx_ " + keyStripped ) if ( ( keyStripped in python_Boot . keywords ) ) else ( ( " _hx_ " + keyStripped ) if ( ( ( ( ( len ( keyStripped ) > 2 ) and ( ( ord ( keyStripped [ 0 ] ) == 95 ) ) ) and ( ( ord ( keyStripped [ 1 ] ) == 95 ) ) ) and ( ( ord ( keyStripped [ ( len ( keyStripped ) - 1 ) ] ) != 95 ) ) ) ) else keyStripped ) ) , v )
return True
2023-03-31 14:47:54 +02:00
class xrfragment_URI :
_hx_class_name = " xrfragment.URI "
2023-03-10 18:49:16 +01:00
__slots__ = ( )
2023-03-31 14:47:54 +02:00
_hx_statics = [ " parse " ]
2023-03-10 18:49:16 +01:00
@staticmethod
2023-05-04 13:28:12 +02:00
def parse ( url , _hx_filter ) :
store = _hx_AnonObject ( { } )
2023-06-10 14:43:07 +02:00
tmp = None
if ( url is not None ) :
startIndex = None
tmp = ( ( ( url . find ( " # " ) if ( ( startIndex is None ) ) else HxString . indexOfImpl ( url , " # " , startIndex ) ) ) == - 1 )
else :
tmp = True
if tmp :
2023-05-04 13:28:12 +02:00
return store
fragment = url . split ( " # " )
2023-03-10 18:49:16 +01:00
_this = ( fragment [ 1 ] if 1 < len ( fragment ) else None )
splitArray = _this . split ( " & " )
_g = 0
_g1 = len ( splitArray )
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
_this = ( splitArray [ i ] if i > = 0 and i < len ( splitArray ) else None )
splitByEqual = _this . split ( " = " )
2023-03-31 12:58:53 +02:00
regexPlus = EReg ( " \\ + " , " g " )
2023-03-10 18:49:16 +01:00
key = ( splitByEqual [ 0 ] if 0 < len ( splitByEqual ) else None )
2023-04-14 17:37:33 +02:00
value = " "
2023-03-10 18:49:16 +01:00
if ( len ( splitByEqual ) > 1 ) :
_this1 = regexPlus . split ( ( splitByEqual [ 1 ] if 1 < len ( splitByEqual ) else None ) )
value = python_lib_urllib_Parse . unquote ( " " . join ( [ python_Boot . toString1 ( x1 , ' ' ) for x1 in _this1 ] ) )
2023-12-06 12:55:08 +01:00
ok = xrfragment_Parser . parse ( key , value , store , i )
2023-05-04 13:28:12 +02:00
if ( ( _hx_filter is not None ) and ( ( _hx_filter != 0 ) ) ) :
2023-04-14 15:19:52 +02:00
_g = 0
2023-05-04 13:28:12 +02:00
_g1 = python_Boot . fields ( store )
2023-04-14 15:19:52 +02:00
while ( _g < len ( _g1 ) ) :
key = ( _g1 [ _g ] if _g > = 0 and _g < len ( _g1 ) else None )
_g = ( _g + 1 )
2023-05-04 13:28:12 +02:00
xrf = Reflect . field ( store , key )
if ( not xrf . _hx_is ( _hx_filter ) ) :
Reflect . deleteField ( store , key )
return store
2023-03-10 18:49:16 +01:00
2023-04-14 15:19:52 +02:00
class xrfragment_XRF :
_hx_class_name = " xrfragment.XRF "
2024-02-01 20:10:41 +01:00
__slots__ = ( " fragment " , " flags " , " index " , " x " , " y " , " z " , " floats " , " speed " , " color " , " string " , " int " , " float " , " filter " , " noXRF " )
_hx_fields = [ " fragment " , " flags " , " index " , " x " , " y " , " z " , " floats " , " speed " , " color " , " string " , " int " , " float " , " filter " , " noXRF " ]
2023-04-14 15:19:52 +02:00
_hx_methods = [ " is " , " validate " , " guessType " ]
2024-02-01 20:10:41 +01:00
_hx_statics = [ " ASSET " , " PROP_BIND " , " QUERY_OPERATOR " , " PROMPT " , " ROUNDROBIN " , " NAVIGATOR " , " METADATA " , " PV_OVERRIDE " , " PV_EXECUTE " , " T_COLOR " , " T_INT " , " T_FLOAT " , " T_VECTOR2 " , " T_VECTOR3 " , " T_URL " , " T_PREDEFINED_VIEW " , " T_STRING " , " T_MEDIAFRAG " , " T_DYNAMIC " , " isColor " , " isInt " , " isFloat " , " isVector " , " isUrl " , " isUrlOrPretypedView " , " isString " , " operators " , " isProp " , " isExclude " , " isDeep " , " isNumber " , " isMediaFrag " , " set " , " unset " ]
2023-04-14 15:19:52 +02:00
2023-12-06 12:55:08 +01:00
def __init__ ( self , _fragment , _flags , _index = None ) :
2023-09-14 10:20:10 +02:00
self . noXRF = None
2023-12-06 12:55:08 +01:00
self . filter = None
2023-04-14 15:19:52 +02:00
self . float = None
self . int = None
self . string = None
self . color = None
self . z = None
self . y = None
self . x = None
2024-02-01 20:10:41 +01:00
self . speed = list ( )
self . floats = list ( )
2023-04-14 15:19:52 +02:00
self . fragment = _fragment
self . flags = _flags
2023-12-06 12:55:08 +01:00
self . index = _index
2023-04-14 15:19:52 +02:00
def _hx_is ( self , flag ) :
2023-11-03 21:22:05 +01:00
if ( not Std . isOfType ( self . flags , Int ) ) :
self . flags = 0
2023-04-14 15:19:52 +02:00
return ( ( ( self . flags & flag ) ) != 0 )
def validate ( self , value ) :
self . guessType ( self , value )
ok = True
2023-11-03 21:22:05 +01:00
if ( ( ( not self . _hx_is ( xrfragment_XRF . T_FLOAT ) ) and self . _hx_is ( xrfragment_XRF . T_VECTOR2 ) ) and ( not ( ( Std . isOfType ( self . x , Float ) and Std . isOfType ( self . y , Float ) ) ) ) ) :
ok = False
2023-12-06 12:55:08 +01:00
if ( ( ( not ( ( self . _hx_is ( xrfragment_XRF . T_VECTOR2 ) or self . _hx_is ( xrfragment_XRF . T_STRING ) ) ) ) and self . _hx_is ( xrfragment_XRF . T_VECTOR3 ) ) and ( not ( ( ( Std . isOfType ( self . x , Float ) and Std . isOfType ( self . y , Float ) ) and Std . isOfType ( self . z , Float ) ) ) ) ) :
2023-11-03 21:22:05 +01:00
ok = False
2023-04-14 15:19:52 +02:00
return ok
def guessType ( self , v , _hx_str ) :
v . string = _hx_str
2023-12-06 12:55:08 +01:00
if ( not Std . isOfType ( _hx_str , str ) ) :
return
if ( len ( _hx_str ) > 0 ) :
if ( len ( _hx_str . split ( " , " ) ) > 1 ) :
2024-02-01 20:10:41 +01:00
xyzn = _hx_str . split ( " , " )
if ( len ( xyzn ) > 0 ) :
v . x = Std . parseFloat ( ( xyzn [ 0 ] if 0 < len ( xyzn ) else None ) )
if ( len ( xyzn ) > 1 ) :
v . y = Std . parseFloat ( ( xyzn [ 1 ] if 1 < len ( xyzn ) else None ) )
if ( len ( xyzn ) > 2 ) :
v . z = Std . parseFloat ( ( xyzn [ 2 ] if 2 < len ( xyzn ) else None ) )
_g = 0
_g1 = len ( xyzn )
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
_this = v . floats
x = Std . parseFloat ( ( xyzn [ i ] if i > = 0 and i < len ( xyzn ) else None ) )
_this . append ( x )
2023-12-06 12:55:08 +01:00
_this = xrfragment_XRF . isColor
_this . matchObj = python_lib_Re . search ( _this . pattern , _hx_str )
if ( _this . matchObj is not None ) :
v . color = _hx_str
_this = xrfragment_XRF . isFloat
_this . matchObj = python_lib_Re . search ( _this . pattern , _hx_str )
if ( _this . matchObj is not None ) :
v . x = Std . parseFloat ( _hx_str )
v . float = v . x
_this = xrfragment_XRF . isInt
_this . matchObj = python_lib_Re . search ( _this . pattern , _hx_str )
if ( _this . matchObj is not None ) :
v . int = Std . parseInt ( _hx_str )
v . x = v . int
2024-02-01 20:10:41 +01:00
_this = xrfragment_XRF . isMediaFrag
_this . matchObj = python_lib_Re . search ( _this . pattern , _hx_str )
if ( _this . matchObj is not None ) :
speed = _hx_str . split ( " * " )
v . speed = list ( )
if ( len ( speed ) > 1 ) :
_this = ( speed [ 1 ] if 1 < len ( speed ) else None )
values = _this . split ( " , " )
_g = 0
_g1 = len ( values )
while ( _g < _g1 ) :
i = _g
_g = ( _g + 1 )
_this = v . speed
x = Std . parseFloat ( ( values [ i ] if i > = 0 and i < len ( values ) else None ) )
_this . append ( x )
2023-12-06 12:55:08 +01:00
v . filter = xrfragment_Filter ( ( ( HxOverrides . stringOrNull ( v . fragment ) + " = " ) + HxOverrides . stringOrNull ( v . string ) ) )
else :
v . filter = xrfragment_Filter ( v . fragment )
2023-04-14 15:19:52 +02:00
2023-04-28 14:27:30 +02:00
@staticmethod
def set ( flag , flags ) :
return ( flags | flag )
@staticmethod
def unset ( flag , flags ) :
return ( flags & ~ flag )
2023-04-14 15:19:52 +02:00
2023-03-09 19:58:08 +01:00
Math . NEGATIVE_INFINITY = float ( " -inf " )
Math . POSITIVE_INFINITY = float ( " inf " )
Math . NaN = float ( " nan " )
Math . PI = python_lib_Math . pi
2023-03-30 19:51:32 +02:00
Test . errors = 0
2023-03-09 19:58:08 +01:00
python_Boot . keywords = set ( [ " and " , " del " , " from " , " not " , " with " , " as " , " elif " , " global " , " or " , " yield " , " assert " , " else " , " if " , " pass " , " None " , " break " , " except " , " import " , " raise " , " True " , " class " , " exec " , " in " , " return " , " False " , " continue " , " finally " , " is " , " try " , " def " , " for " , " lambda " , " while " ] )
python_Boot . prefixLength = len ( " _hx_ " )
2023-03-31 12:58:53 +02:00
xrfragment_Parser . error = " "
2023-05-04 16:26:14 +02:00
xrfragment_Parser . debug = False
2023-04-14 15:19:52 +02:00
xrfragment_XRF . ASSET = 1
2023-04-20 18:49:18 +02:00
xrfragment_XRF . PROP_BIND = 2
2023-04-14 17:37:33 +02:00
xrfragment_XRF . QUERY_OPERATOR = 4
xrfragment_XRF . PROMPT = 8
xrfragment_XRF . ROUNDROBIN = 16
2023-05-05 13:26:17 +02:00
xrfragment_XRF . NAVIGATOR = 32
2023-08-15 18:27:26 +02:00
xrfragment_XRF . METADATA = 64
2023-05-04 13:28:12 +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-01 20:10:41 +01:00
xrfragment_XRF . T_MEDIAFRAG = 2097152
xrfragment_XRF . T_DYNAMIC = 4194304
2023-04-14 15:19:52 +02:00
xrfragment_XRF . isColor = EReg ( " ^#([A-Fa-f0-9] {6} |[A-Fa-f0-9] {3} )$ " , " " )
2023-11-03 21:22:05 +01:00
xrfragment_XRF . isInt = EReg ( " ^[-0-9]+$ " , " " )
xrfragment_XRF . isFloat = EReg ( " ^[-0-9]+ \\ .[0-9]+$ " , " " )
2023-04-28 14:27:30 +02:00
xrfragment_XRF . isVector = EReg ( " ([,]+| \\ w) " , " " )
xrfragment_XRF . isUrl = EReg ( " (://)? \\ ..* " , " " )
xrfragment_XRF . isUrlOrPretypedView = EReg ( " (^#|://)? \\ ..* " , " " )
xrfragment_XRF . isString = EReg ( " .* " , " " )
2023-12-06 12:55:08 +01:00
xrfragment_XRF . operators = EReg ( " (^-|[ \\ *]+) " , " " )
xrfragment_XRF . isProp = EReg ( " ^.*=[><=]? " , " " )
xrfragment_XRF . isExclude = EReg ( " ^- " , " " )
xrfragment_XRF . isDeep = EReg ( " \\ * " , " " )
xrfragment_XRF . isNumber = EReg ( " ^[0-9 \\ .]+$ " , " " )
2024-02-01 20:10:41 +01:00
xrfragment_XRF . isMediaFrag = EReg ( " ^[0-9 \\ ., \\ *]+$ " , " " )
2023-03-09 19:58:08 +01:00
Test . main ( )