python3: Make ryu.utils.hex_array functional

Signed-off-by: IWAMOTO Toshihiro <iwamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
IWAMOTO Toshihiro 2015-06-30 17:01:56 +09:00 committed by FUJITA Tomonori
parent fb6256ab17
commit 698cf43b03

View File

@ -33,6 +33,7 @@
import inspect import inspect
import logging import logging
import os import os
import six
import sys import sys
import re import re
@ -99,19 +100,25 @@ def round_up(x, y):
def _str_to_hex(data): def _str_to_hex(data):
"""Convert string into array of hexes to be printed.""" """Convert str into array of hexes to be printed. (Python2 only)"""
return ' '.join(hex(ord(char)) for char in data) return ' '.join(hex(ord(char)) for char in data)
def _bytearray_to_hex(data): def _bytearray_to_hex(data):
"""Convert bytearray into array of hexes to be printed.""" """Convert bytearray into array of hexes to be printed.
In Python3, this function works for binary_types, too.
"""
return ' '.join(hex(byte) for byte in data) return ' '.join(hex(byte) for byte in data)
def hex_array(data): def hex_array(data):
"""Convert string or bytearray into array of hexes to be printed.""" """Convert binary_type or bytearray into array of hexes to be printed."""
to_hex = {str: _str_to_hex, if six.PY3:
bytearray: _bytearray_to_hex} to_hex = {six.binary_type: _bytearray_to_hex,
bytearray: _bytearray_to_hex}
else:
to_hex = {six.binary_type: _str_to_hex,
bytearray: _bytearray_to_hex}
try: try:
return to_hex[type(data)](data) return to_hex[type(data)](data)
except KeyError: except KeyError: