lljson has inconsistent behavior. I think these should all produce an error:
print(pcall(lljson.sldecode, '"!vOops"'))
print(pcall(lljson.sldecode, '"!qOops"'))
print(pcall(lljson.sldecode, '"!uOops"'))
The first 2 produce an error:
malformed tagged vector: !vOops
malformed tagged quaternion: !qOops
But the last one produces an uncompressed uuid:
local _, u = pcall(lljson.sldecode, '"!uOops"')
print(u, typeof(u), u.bytes) -- Oops uuid nil
This uuid cannot be re-encoded:
print(pcall(lljson.slencode, u))
invalid UUID format for JSON encoding
Instead,
sldecode
should produce an error:
malformed tagged uuid: !uOops
And uncompressed uuid's should be removed from slua, it's documentation, and typechecker: https://github.com/secondlife/lsl-definitions/blob/23d46484888c1908545dc92db119613bb553af11/slua_definitions.yaml#L70
- name: bytes
comment: Returns the raw 16-byte binary string of the UUID, or nil if the UUID
is not in a compressed state
type: string?