def serialize_bytes(self, bytes, as_byte_array=not six.PY2):
     if as_byte_array:
         return (WXF_CONSTANTS.BinaryString, varint_bytes(len(bytes)),
                 bytes)
     else:
         return self.serialize_string(
             force_text(bytes, encoding="iso8859-1"))
示例#2
0
    def serialize_function(self, head, args, **opts):

        iterable, length = get_length(args, **opts)

        return chain(
            (WXF_CONSTANTS.Function, varint_bytes(length)), head, chain.from_iterable(iterable)
        )
示例#3
0
 def serialize_bytes(self, bytes, as_byte_array=not six.PY2):
     if as_byte_array:
         yield WXF_CONSTANTS.BinaryString
         yield varint_bytes(len(bytes))
         yield bytes
     else:
         for token in self.serialize_string(force_text(bytes, encoding="iso8859-1")):
             yield token
示例#4
0
    def serialize_mapping(self, keyvalue, **opts):
        #the normalizer is always sending an generator key, value

        iterable, length = get_length(keyvalue, **opts)

        return chain((WXF_CONSTANTS.Association, varint_bytes(length)),
                     chain.from_iterable(
                         chain((WXF_CONSTANTS.Rule, ), key, value)
                         for key, value in iterable))
示例#5
0
    def serialize_int(self, number):
        try:
            wxf_type, int_size = integer_size(number)
            yield wxf_type
            yield integer_to_bytes(number, int_size)

        except ValueError:
            # WXFExprInteger is raising a ValueError if the integer is not in the appropriate bounds.
            # that check needs to be done in case, it's better to do it only once.

            number = b"%i" % number

            yield WXF_CONSTANTS.BigInteger
            yield varint_bytes(len(number))
            yield number
示例#6
0
 def serialize_symbol(self, name):
     yield WXF_CONSTANTS.Symbol
     yield varint_bytes(len(name))
     yield force_bytes(name)
示例#7
0
 def serialize_string(self, string):
     string = force_bytes(string)
     yield WXF_CONSTANTS.String
     yield varint_bytes(len(string))
     yield string
示例#8
0
 def serialize_decimal(self, number):
     number = py_encode_decimal(number)
     yield WXF_CONSTANTS.BigReal
     yield varint_bytes(len(number))
     yield number