messages.anubis 1.91 KB
/*
 * Created by PyramIDE.
 * User: フランスのトトロ aka (David RENÉ) 
 * Date: 23/01/2017
 * Time: 10:09
 * © Calexium 
 */

read generation/message_header.anubis
read generation/message_messages.anubis

read system/files.anubis
read system/string.anubis
read tools/streams.anubis
read tools/basis.anubis
read densaku_lib/types/ds_message.anubis


define Maybe(One)
  make_message_file
  (
    DS_Message  ds_message,   //type description
    String      dest_dir
  )
  =
  since ds_message is ds_message(name, _, fields),
  println("Generating file for message ["+name+"]");
  //TODO here replace all files by one with collection name
  with file_name = dest_dir+"messages/generated/"+to_lower(name)+".anubis",

  //create all necessary directories if doesn't exist.
  make_directories(file_name);
  
  if file(file_name, new) is
  {
    failure     then  println("can't create file "+file_name);failure,
    success(fd) then 
      with strm = make_stream(fd),
      if generate_message_header(strm, ds_message)                is { failure then failure, success(_) then
//      if generate_type(strm, ds_message)                        is { failure then failure, success(_) then
      if generate_message_message_description(strm, ds_message)   is { failure then failure, success(_) then
      if generate_to_message(strm, ds_message)                    is { failure then failure, success(_) then
      if generate_from_message(strm, ds_message)                  is { failure then failure, success(_) then
      
      success(unique)}}}}//}
  }
.

public define One
  make_all_messages
  (
    List(DS_Message)  messages,
    String            destination_dir
  )=
  map_forget((DS_Message message) |-> since message is ds_message(message_name, what_code, ds_fields),
                       println("generating message file for Message ["+message_name+"]");
                       make_message_file(message, destination_dir), messages)
.