Return immediately in some cases instead of using the result list

I like it better now, but I still dislike it; We need to rewrite the entire function
master
udf 2018-11-21 22:49:17 +02:00
parent 778a604d69
commit 35b6e7d1e4
Signed by untrusted user: kate
GPG Key ID: E40724BAD73AF77B
1 changed files with 27 additions and 27 deletions

View File

@ -33,42 +33,42 @@ def yaml_format(obj, indent=0):
obj = obj.to_dict()
if isinstance(obj, dict):
if not obj:
return 'dict:'
result.append(obj.get('_', 'dict') + ':')
if obj:
items = obj.items()
has_multiple_items = len(items) > 2
if has_multiple_items:
result.append('\n')
indent += 2
for k, v in items:
if k == '_' or v is None:
continue
formatted = yaml_format(v, indent)
if not formatted.strip():
continue
result.append(' ' * (indent if has_multiple_items else 1))
result.append(f'{k}: {formatted}')
result.append('\n')
result.pop()
indent -= 2
result.append(' ' * indent)
items = obj.items()
has_multiple_items = len(items) > 2
if has_multiple_items:
result.append('\n')
indent += 2
for k, v in items:
if k == '_' or v is None:
continue
formatted = yaml_format(v, indent)
if not formatted.strip():
continue
result.append(' ' * (indent if has_multiple_items else 1))
result.append(f'{k}: {formatted}')
result.append('\n')
result.pop()
indent -= 2
result.append(' ' * indent)
elif isinstance(obj, str):
# truncate long strings and display elipsis
result.append(repr(obj[:STR_LEN_MAX]))
result = repr(obj[:STR_LEN_MAX])
if len(obj) > STR_LEN_MAX:
result.append('')
result += ''
return result
elif isinstance(obj, bytes):
# repr() bytes if it's printable, hex like "FF EE BB" otherwise
if all(c in PRINTABLE_SET for c in obj):
result.append(repr(obj))
return repr(obj)
else:
if len(obj) > BYTE_LEN_MAX:
result.append('<…>')
else:
result.append(' '.join(f'{b:02X}' for b in obj))
return ('<…>' if len(obj) > BYTE_LEN_MAX else
' '.join(f'{b:02X}' for b in obj))
elif isinstance(obj, datetime.datetime):
# ISO-8601 without timezone offset (telethon dates are always UTC)
result.append(obj.strftime('%Y-%m-%d %H:%M:%S'))
return obj.strftime('%Y-%m-%d %H:%M:%S')
elif hasattr(obj, '__iter__'):
# display iterables one after another at the base indentation level
result.append('\n')
@ -80,7 +80,7 @@ def yaml_format(obj, indent=0):
indent -= 2
result.append(' ' * indent)
else:
result.append(repr(obj))
return repr(obj)
return ''.join(result)