Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _generate_route_signature(
self,
route,
namespace, # pylint: disable=unused-argument
route_args,
extra_args,
doc_list,
task_type_name,
func_suffix):
"""Generates route method signature for the given route."""
for name, _, typ in extra_args:
route_args.append((name, typ))
deprecated = 'DEPRECATED: ' if route.deprecated else ''
func_name = '{}{}'.format(fmt_var(route.name), func_suffix)
self.emit(comment_prefix)
if route.doc:
route_doc = self.process_doc(route.doc, self._docf)
else:
route_doc = 'The {} route'.format(func_name)
self.emit_wrapped_text(
deprecated + route_doc, prefix=comment_prefix, width=120)
self.emit(comment_prefix)
for name, doc in doc_list:
self.emit_wrapped_text(
'@param {} {}'.format(name, doc if doc else undocumented),
prefix=comment_prefix,
width=120)
self.emit(comment_prefix)
func=self._cstor_name_from_fields(fields_no_default),
args=self._cstor_args_from_fields(
fields_no_default, is_struct=True),
return_type='instancetype')
self.emit(comment_prefix)
description_str = (
'Convenience constructor (exposes only non-nullable '
'instance variables with no default value).')
self.emit_wrapped_text(description_str, prefix=comment_prefix)
self.emit(comment_prefix)
for field in fields_no_default:
doc = self.process_doc(field.doc,
self._docf) if field.doc else undocumented
self.emit_wrapped_text(
'@param {} {}'.format(fmt_var(field.name), doc),
prefix=comment_prefix)
if struct.all_fields:
self.emit(comment_prefix)
self.emit_wrapped_text(
'@return An initialized instance.', prefix=comment_prefix)
self.emit(comment_prefix)
self.emit('{};'.format(signature))
self.emit()
def _docf(self, tag, val):
if tag == 'route':
return '`{}`'.format(fmt_func(val))
elif tag == 'field':
if '.' in val:
cls_name, field = val.split('.')
return ('`{}` in `{}`'.format(
fmt_var(field), self.obj_name_to_namespace[cls_name]))
else:
return fmt_var(val)
elif tag in ('type', 'val', 'link'):
return val
else:
return val
default_value = fmt_default_value(
field) if field.has_default else 'nil'
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))
with self.block_func(
func=fmt_camel(field.name),
args=[],
return_type=fmt_type(field.data_type)):
with self.block(
'if (![self is{}])'.format(
fmt_camel_upper(field.name)),
delim=('{', '}')):
error_msg = 'Invalid tag: required {}, but was %@.'.format(
enum_field_name)
throw_exc = (
'[NSException raise:@"IllegalStateException" '
'format:@"{}", [self tagName]];')
self.emit(throw_exc.format(error_msg))
self.emit('return _{};'.format(fmt_var(field.name)))
self.emit()
def _generate_struct_cstor_default(self, struct):
"""Emits struct convenience constructor. Default arguments are omitted."""
if not self._struct_has_defaults(struct):
return
fields_no_default = [
f for f in struct.all_fields
if not f.has_default and not is_nullable_type(f.data_type)
]
with self.block_func(
func=self._cstor_name_from_fields(fields_no_default),
args=fmt_func_args_from_fields(fields_no_default),
return_type='instancetype'):
args = ([(fmt_var(f.name), fmt_var(f.name) if not f.has_default and
not is_nullable_type(f.data_type) else 'nil')
for f in struct.all_fields])
cstor_args = fmt_func_args(args)
self.emit('return [self {}:{}];'.format(
self._cstor_name_from_fields(struct.all_fields), cstor_args))
self.emit()
deserialize_call = self._fmt_serialization_call(
field.data_type, input_value, False)
if nullable or field.has_default:
default_value = fmt_default_value(
field) if field.has_default else 'nil'
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 _get_route_args(self, namespace, route, tag=False): # pylint: disable=unused-argument
"""Returns a list of name / value string pairs representing the arguments for
a particular route."""
data_type, _ = unwrap_nullable(route.arg_data_type)
if is_struct_type(data_type):
arg_list = []
for field in data_type.all_fields:
arg_list.append((fmt_var(field.name), fmt_type(
field.data_type, tag=tag, has_default=field.has_default)))
doc_list = [(fmt_var(f.name), self.process_doc(f.doc, self._docf))
for f in data_type.fields if f.doc]
elif is_union_type(data_type):
arg_list = [(fmt_var(data_type.name), fmt_type(
route.arg_data_type, tag=tag))]
doc_list = [(fmt_var(data_type.name),
self.process_doc(data_type.doc,
self._docf) if data_type.doc
else 'The {} union'.format(
fmt_class(data_type
.name)))]
else:
arg_list = []
doc_list = []
return arg_list, doc_list
def _get_default_route_args(
self,
namespace, # pylint: disable=unused-argument
route,
tag=False):
"""Returns a list of name / value string pairs representing the default arguments for
a particular route."""
data_type, _ = unwrap_nullable(route.arg_data_type)
if is_struct_type(data_type):
arg_list = []
for field in data_type.all_fields:
if not field.has_default and not is_nullable_type(
field.data_type):
arg_list.append((fmt_var(field.name), fmt_type(
field.data_type, tag=tag)))
doc_list = ([(fmt_var(f.name), self.process_doc(f.doc, self._docf))
for f in data_type.fields
if f.doc and not f.has_default and
not is_nullable_type(f.data_type)])
else:
arg_list = []
doc_list = []
return arg_list, doc_list