diff options
Diffstat (limited to '')
-rw-r--r-- | iredis/renders.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/iredis/renders.py b/iredis/renders.py index 02470f0..2898c42 100644 --- a/iredis/renders.py +++ b/iredis/renders.py @@ -56,6 +56,8 @@ class OutputRender: return value if isinstance(value, int): return str(value).encode() + if isinstance(value, str): + return value.encode() if isinstance(value, list): return _render_raw_list(value) @@ -78,7 +80,7 @@ class OutputRender: @staticmethod def render_nested_pair(value): """ - For redis internel responses. + For redis internal responses. Always decode with utf-8 Render nested list. Items come as pairs. @@ -169,6 +171,16 @@ class OutputRender: return FormattedText([("class:success", text)]) @staticmethod + def render_help(raw): + """ + render help text message. + the comand like ``ACL HELP`` and ``MEMORY HELP`` + will return a list of strings. + we render it as plain text + """ + return FormattedText([("class:string", _render_raw_list(raw).decode())]) + + @staticmethod def render_transaction_queue(text): """ Used when client session is in a transaction. @@ -344,6 +356,8 @@ def _render_raw_list(bytes_items): flatten_items.append(item) elif isinstance(item, int): flatten_items.append(str(item).encode()) + elif isinstance(item, str): + flatten_items.append(item.encode()) elif isinstance(item, list): flatten_items.append(_render_raw_list(item)) return b"\n".join(flatten_items) @@ -387,7 +401,7 @@ def _render_scan(render_response, response): rendered = [ ("class:type", "(cursor) "), - ("class:integer", cursor.decode()), + ("class:integer", cursor if isinstance(cursor, str) else cursor.decode()), ("", "\n"), ] rendered_keys = render_response(responses) |