Initial React project

This commit is contained in:
Johan
2026-03-23 07:49:45 +01:00
parent 8d33465f51
commit e204032b56
1353 changed files with 23853 additions and 50282 deletions

View File

@@ -25,13 +25,20 @@ class _String:
def __init__(self, value):
self.value = value
def _array_keys(value):
for i in range(len(value)):
yield i
keys = []
i = 0
for _ in value:
keys.append(i)
i += 1
return keys
def _object_keys(value):
keys = []
for key in value:
yield key
keys.append(key)
return keys
def _is_array(value):
return isinstance(value, (list, tuple))
@@ -49,6 +56,24 @@ def _index(known, input, value):
known.value.append(index)
return index
def _loop(keys, input, known, output):
for key in keys:
value = output[key]
if isinstance(value, _String):
_ref(key, input[int(value.value)], input, known, output)
return output
def _ref(key, value, input, known, output):
if _is_array(value) and value not in known:
known.append(value)
value = _loop(_array_keys(value), input, known, value)
elif _is_object(value) and value not in known:
known.append(value)
value = _loop(_object_keys(value), input, known, value)
output[key] = value
def _relate(known, input, value):
if _is_string(value) or _is_array(value) or _is_object(value):
try:
@@ -58,22 +83,6 @@ def _relate(known, input, value):
return value
def _resolver(input, lazy, parsed):
def resolver(output):
keys = _array_keys(output) if _is_array(output) else _object_keys(output) if _is_object(output) else []
for key in keys:
value = output[key]
if isinstance(value, _String):
tmp = input[int(value.value)]
output[key] = tmp
if (_is_array(tmp) or _is_object(tmp)) and tmp not in parsed:
parsed.append(tmp)
lazy.append([output, key])
return output
return resolver
def _transform(known, input, value):
if _is_array(value):
output = []
@@ -119,16 +128,12 @@ def parse(value, *args, **kwargs):
input.append(value)
value = input[0]
lazy = []
revive = _resolver(input, lazy, [value])
value = revive(value)
if _is_array(value):
return _loop(_array_keys(value), input, [value], value)
i = 0
while i < len(lazy):
o, k = lazy[i]
i += 1
o[k] = revive(o[k])
if _is_object(value):
return _loop(_object_keys(value), input, [value], value)
return value