Accepted parameterized classes to deserialize

If whitelist.empty, all types are accepted.

import json

class MyClass
    serialize
end

var json_string = """
{"__class": "MyClass"}
"""

var deserializer = new JsonDeserializer(json_string)
var obj = deserializer.deserialize
assert deserializer.errors.is_empty
assert obj isa MyClass

deserializer = new JsonDeserializer(json_string)
deserializer.whitelist.add "Array[String]"
deserializer.whitelist.add "AnotherAcceptedClass"
obj = deserializer.deserialize
assert deserializer.errors.length == 1
assert obj == null

Property definitions

serialization $ SafeDeserializer :: whitelist
	# Accepted parameterized classes to deserialize
	#
	# If `whitelist.empty`, all types are accepted.
	#
	# ~~~
	# import json
	#
	# class MyClass
	#     serialize
	# end
	#
	# var json_string = """
	# {"__class": "MyClass"}
	# """
	#
	# var deserializer = new JsonDeserializer(json_string)
	# var obj = deserializer.deserialize
	# assert deserializer.errors.is_empty
	# assert obj isa MyClass
	#
	# deserializer = new JsonDeserializer(json_string)
	# deserializer.whitelist.add "Array[String]"
	# deserializer.whitelist.add "AnotherAcceptedClass"
	# obj = deserializer.deserialize
	# assert deserializer.errors.length == 1
	# assert obj == null
	# ~~~
	var whitelist = new Array[Text]
lib/serialization/safe.nit:27,2--54,32