Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return_type='nullable NSDictionary *',
class_func=True):
func_call = fmt_func_call(
caller=fmt_serial_class(data_type_name),
callee='serialize',
args=fmt_func_args([('instance', 'instance')]))
self.emit('return {};'.format(func_call))
self.emit()
with self.block_func(
func='deserialize',
args=fmt_func_args_declaration([('dict', 'NSDictionary *')]),
return_type='id',
class_func=True):
self.emit('return {};'.format(
fmt_func_call(
caller=fmt_serial_class(data_type_name),
callee='deserialize',
args=fmt_func_args([('dict', 'dict')]))))
self.emit()
def _generate_serializable_funcs(self, data_type_name):
"""Emits the two struct/union functions that implement the Serializable protocol."""
with self.block_func(
func='serialize',
args=fmt_func_args_declaration([('instance', 'id')]),
return_type='nullable NSDictionary *',
class_func=True):
func_call = fmt_func_call(
caller=fmt_serial_class(data_type_name),
callee='serialize',
args=fmt_func_args([('instance', 'instance')]))
self.emit('return {};'.format(func_call))
self.emit()
with self.block_func(
func='deserialize',
args=fmt_func_args_declaration([('dict', 'NSDictionary *')]),
return_type='id',
class_func=True):
self.emit('return {};'.format(
fmt_func_call(
caller=fmt_serial_class(data_type_name),
callee='deserialize',
args=fmt_func_args([('dict', 'dict')]))))
if is_primitive_type(data_type):
deserialize_call = '{} ?: {}'.format(
input_value, default_value)
else:
deserialize_call = '{} ? {} : {}'.format(
input_value, deserialize_call, default_value)
self.emit('{}{} = {};'.format(
fmt_type(field.data_type),
fmt_var(field.name), deserialize_call))
self.emit()
deserialized_obj_args = [(fmt_var(f.name), fmt_var(f.name))
for f in struct.all_fields]
init_call = fmt_func_call(
caller=fmt_alloc_call(caller=struct_name),
callee=self._cstor_name_from_fields(struct.all_fields),
args=fmt_func_args(deserialized_obj_args))
self.emit('return {};'.format(init_call))
def _generate_description_func(self, data_type_name):
with self.block_func(
func='description', args=[], return_type='NSString *'):
serialize_call = fmt_func_call(
caller=fmt_serial_class(data_type_name),
callee='serialize',
args=fmt_func_args([('valueObj', 'self')]))
self.emit('return {};'.format(
fmt_func_call(caller=serialize_call, callee='description')))
self.emit()
user_args.append((name, typ))
transport_args.append((name, value))
with self.block_func(
func='{}{}'.format(fmt_var(route.name), func_suffix),
args=fmt_func_args_declaration(user_args),
return_type='{} *'.format(task_type_name)):
self.emit('DBRoute *route = {}.{};'.format(
fmt_route_obj_class(namespace.name),
fmt_route_var(namespace.name, route.name)))
if is_union_type(route.arg_data_type):
self.emit('{} *arg = {};'.format(
fmt_class_prefix(route.arg_data_type),
fmt_var(route.arg_data_type.name)))
elif not is_void_type(route.arg_data_type):
init_call = fmt_func_call(
caller=fmt_alloc_call(
caller=fmt_class_prefix(route.arg_data_type)),
callee=self._cstor_name_from_fields_names(route_args),
args=fmt_func_args([(f[0], f[0]) for f in route_args]))
self.emit('{} *arg = {};'.format(
fmt_class_prefix(route.arg_data_type), init_call))
request_call = fmt_func_call(
caller='self.client',
callee='request{}'.format(
fmt_camel_upper(route.attrs.get('style'))),
args=fmt_func_args(transport_args))
self.emit('return {};'.format(request_call))
self.emit()
callee=self._cstor_name_from_fields(struct.all_fields),
args=fmt_func_args(deserialized_obj_args))
self.emit('return {};'.format(init_call))
if not struct.has_enumerated_subtypes():
emit_struct_deserialize_logic(struct)
else:
for tags, subtype in struct.get_all_subtypes_with_tags():
assert len(tags) == 1, tags
tag = tags[0]
base_string = 'if ([valueDict[@".tag"] isEqualToString:@"{}"])'
with self.block(base_string.format(tag)):
caller = fmt_serial_class(fmt_class_prefix(subtype))
args = fmt_func_args([('value', 'valueDict')])
deserialize_call = fmt_func_call(
caller=caller, callee='deserialize', args=args)
self.emit('return {};'.format(deserialize_call))
self.emit()
if struct.is_catch_all():
emit_struct_deserialize_logic(struct)
else:
description_str = (
'[NSString stringWithFormat:@"Tag has an invalid '
'value: \\\"%@\\\".", valueDict[@".tag"]]')
self._generate_throw_error('InvalidTag', description_str)
self.emit()
def _generate_description_func(self, data_type_name):
with self.block_func(
func='description', args=[], return_type='NSString *'):
serialize_call = fmt_func_call(
caller=fmt_serial_class(data_type_name),
callee='serialize',
args=fmt_func_args([('valueObj', 'self')]))
self.emit('return {};'.format(
fmt_func_call(caller=serialize_call, callee='description')))
self.emit()
elem_data_type = (data_type.value_data_type if
is_map_type(data_type) else data_type.data_type)
serialization_call = self._fmt_serialization_call(
elem_data_type, 'elem{}'.format(depth), serialize, depth + 1)
data_struct_block = '^id(id elem{}) {{ return {}; }}'.format(
depth, serialization_call)
serializer_args.append(('withBlock', data_struct_block))
elif is_timestamp_type(data_type):
serializer_args.append(('value', input_value))
serializer_args.append(('dateFormat',
'@"{}"'.format(data_type.format)))
else:
serializer_args.append(('value', input_value))
return '{}'.format(
fmt_func_call(
caller=fmt_serial_obj(data_type),
callee=serializer_func,
args=fmt_func_args(serializer_args)))
pattern = data_type.pattern.encode('unicode_escape').replace(
"\"", "\\\"") if data_type.pattern else None
validator = '{}:{}'.format(
fmt_validator(data_type),
fmt_func_args([
('minLength', '@({})'.format(data_type.min_length)
if data_type.min_length else 'nil'),
('maxLength', '@({})'.format(data_type.max_length)
if data_type.max_length else 'nil'),
('pattern', '@"{}"'.format(pattern)
if pattern else 'nil'),
]))
if nullable:
if validator:
validator = fmt_func_call(
caller='DBStoneValidators', callee=validator)
validator = fmt_func_call(
caller='DBStoneValidators',
callee='nullableValidator',
args=validator)
else:
if validator:
validator = fmt_func_call(
caller='DBStoneValidators', callee=validator)
else:
validator = 'nil'
if not has_default:
validator = fmt_func_call(
caller='DBStoneValidators',
callee='nonnullValidator',
args=validator)
deprecated = '@{}'.format('YES')
else:
deprecated = '@{}'.format('NO')
if not is_void_type(route.result_data_type):
caller = fmt_class_type(
route.result_data_type, suppress_ptr=True)
result_type = fmt_func_call(
caller=caller, callee='class')
else:
result_type = 'nil'
if not is_void_type(route.error_data_type):
caller = fmt_class_type(
route.error_data_type, suppress_ptr=True)
error_type = fmt_func_call(
caller=caller, callee='class')
else:
error_type = 'nil'
if is_list_type(route.arg_data_type) or is_map_type(route.arg_data_type):
dataStructSerialBlock = '^id(id dataStruct) {{ return {}; }}'.format(
self._fmt_serialization_call(
route.result_data_type, 'dataStruct', True))
else:
dataStructSerialBlock = 'nil'
if is_list_type(route.result_data_type) or is_map_type(route.result_data_type):
dataStructDeserialBlock = '^id(id dataStruct) {{ return {}; }}'.format(
self._fmt_serialization_call(
route.result_data_type, 'dataStruct', False))
else: