def body(self): Template.body(self) message = self._message self.add( TSimple("serialize_message(Msg) when is_record(Msg, %s) ->" % make_erlang_atom(message.get_name()))) self.add( TSimple(""" lists:concat(["{ \\"%s\\" : {", """ % message.get_name())) self.add(TSimple("string:join([")) first = True #serialize fields for field in message.get_fields(): if (not first): self.add(TSimple(",")) first = False # serialize field self.add( TSimple("""lists:concat(["\\"%s\\" :", """ % field.get_var_name())) self.add(FieldSerializersFactory().get_field_serializer( field, "Msg#%s.%s" % (make_erlang_atom(message.get_name()), make_erlang_atom(field.get_var_name())))) self.add(TSimple("])")) self.add(TSimple("""], ",") """)) self.add(TSimple(""" , "}}" ]); """))
def body(self): Template.body(self) for message in self._protocol.get_messages().as_list(): logger.debug("adding template for serializating %s message" % message.get_name()) self.add(MessageSerializer(message)) self.add(TSimple("serialize_message(Msg) -> unknown_message.")) # helper functions self.add( TSimple(""" serialize_int(Val) -> lists:concat(['"', Val, '"']). serialize_float(Val) -> lists:concat(['"', lists:flatten(io_lib:format("~p",[Val])), '"']). serialize_string(Val) ->lists:concat(['"', Val, '"']). serialize_list(Fun, Value) -> lists:concat(["[", string:join(lists:map(Fun, Value), ","), "]"]). """))
def body(self): Template.body(self) for message in self._protocol.get_messages().as_list(): logger.debug("adding template for deserializng message %s" % message.get_name()) self.add(MessageDeserializer(message)) self.add( TSimple( 'inner_deserialize_message(_UnknownMsgName, _MsgBody) -> unknown_message.' )) self.add( TSimple(""" deserialize_message(JsonMsgBody) -> {struct, DecodedJson} = mochijson2:decode(JsonMsgBody), inner_deserialize_message(DecodedJson). inner_deserialize_message(DecodedJson) -> [MessageName] = proplists:get_keys(DecodedJson), {struct, DecodedMsgBody} = proplists:get_value(MessageName, DecodedJson), inner_deserialize_message(MessageName, DecodedMsgBody). %% helper functions deserialize_int(Data) -> bstring_to_int(Data). deserialize_float(Data) -> bstring_to_float(Data). deserialize_string(Data) -> binary_to_list(Data). deserialize_list(Fun, List) -> lists:map(Fun, List). bstring_to_int(Bstring) -> {Int, _Rest} = string:to_integer(binary_to_list(Bstring)), Int. bstring_to_float(Bstring) -> {Float, _Rest} = string:to_float(binary_to_list(Bstring)), Float. """))
def __init__(self, messages): Template.__init__(self) self._messages = messages
def __init__(self, protocol): Template.__init__(self) self._protocol = protocol
def __init__(self, field, valueName): Template.__init__(self) self._valueName = valueName
def __init__(self, messages, format): Template.__init__(self) self._messages = messages self._format = format self._templates = {'json': TJsonDeserializers}
def __init__(self, field, indent): Template.__init__(self) self._field = field self._indent = indent
def runTest(self): tmp = Template("root") # tmp.add(Template("one")) tmp.add(Template("two")) tmp.generate()
def __init__(self, protocol, format): Template.__init__(self) self._protocol = protocol self._format = format
def __init__(self, proto): Template.__init__(self) self._proto = proto
def __init__(self, message, indent): Template.__init__(self) self._message = message self._indent = indent
def __init__(self, message, field): Template.__init__(self) self._message = message self._field = field
def __init__(self, msg): Template.__init__(self, msg.get_name()) self._msg = msg