diff --git a/genCfgs.sh b/genCfgs.sh index ffa2a89..c4b6b66 100644 --- a/genCfgs.sh +++ b/genCfgs.sh @@ -2,3 +2,4 @@ python src/genCfgs.py --input ./config_excel --srv ./config_excel/server/ --clt ./config_excel/client/ --timeout -1 --suffix .xlsx --swriter erlanghrl python src/genCfgs.py --input ./config_excel --srv ./config_excel/server/ --clt ./config_excel/client/ --timeout -1 --suffix .xlsx --swriter erlangerl +python src/genCfgs.py --input ./config_excel --srv ./config_excel/server/ --clt ./config_excel/client/ --timeout -1 --suffix .xlsx --swriter lua diff --git a/src/decoder.py b/src/decoder.py index 707603a..0eca53f 100644 --- a/src/decoder.py +++ b/src/decoder.py @@ -33,7 +33,8 @@ SRV_FLAG = "server" CLT_FLAG = "client" # array数组模式下 是否导出 服务器/客户端 get_list()函数 -ALIST_ROW = 3 # 是否导出get_list()函数的设置行 +ALIST_ROW = 3 # 是否导出get_list()函数的设置行 +ALIST_COL = 1 SRV_LIST = "slist" CLT_LIST = "clist" @@ -112,7 +113,7 @@ class ValueConverter(object): class Sheet(object): - def __init__(self,base_name,wb_sheet,srv_writer,clt_writer): + def __init__(self, base_name, wb_sheet, srv_writer, clt_writer, srv_is_list, clt_is_list): self.types = [] # 记录各列字段的类型 @@ -127,6 +128,8 @@ class Sheet(object): self.srv_keys = {} # 服务器key self.clt_keys = {} # 客户端key + self.srv_is_list = srv_is_list # 客户端是否导致get_list() 列表函数 + self.clt_is_list = clt_is_list # 客户端是否导致get_list() 列表函数 self.converter = ValueConverter() @@ -173,7 +176,7 @@ class Sheet(object): return True # 写入配置到文件 - def write_one_file(self,ctx,base_path,writer, keys_list, comment_text): + def write_one_file(self, ctx, base_path, writer, keys_list, comment_text, is_list): # 有些配置可能只导出客户端或只导出服务器 if not any(ctx) : return @@ -184,8 +187,8 @@ class Sheet(object): if 1 == len(match_list): write_file_name = write_file_name + '_' + match_list[0] - wt = writer(self.base_name,self.wb_sheet.title, write_file_name, keys_list, comment_text) - ctx = wt.context( ctx ) + wt = writer(self.base_name, self.wb_sheet.title, write_file_name, keys_list, comment_text, is_list) + ctx = wt.context(ctx) suffix = wt.suffix() if None != ctx : path = base_path + write_file_name + suffix @@ -196,22 +199,22 @@ class Sheet(object): file.close() # 分别写入到服务端、客户端的配置文件 - def write_files(self,srv_path,clt_path): - if None != srv_path and None != self.srv_writer : - self.write_one_file( self.srv_ctx,srv_path,self.srv_writer, self.srv_keys, self.srv_comment) - if None != clt_path and None != self.clt_writer : - self.write_one_file( self.clt_ctx,clt_path,self.clt_writer, self.clt_keys, self.clt_comment ) + def write_files(self, srv_path, clt_path): + if None != srv_path and None != self.srv_writer: + self.write_one_file(self.srv_ctx, srv_path, self.srv_writer, self.srv_keys, self.srv_comment, self.srv_is_list) + if None != clt_path and None != self.clt_writer: + self.write_one_file(self.clt_ctx, clt_path, self.clt_writer, self.clt_keys, self.clt_comment, self.clt_is_list) # 导出数组类型配置,A1格子的内容有array标识 class ArraySheet(Sheet): - def __init__(self,base_name,wb_sheet,srv_writer,clt_writer): + def __init__(self, base_name, wb_sheet, srv_writer, clt_writer, srv_is_list, clt_is_list): # 记录导出各行的内容 self.srv_ctx = [] self.clt_ctx = [] - super( ArraySheet, self ).__init__( - base_name,wb_sheet,srv_writer,clt_writer ) + super(ArraySheet, self).__init__( + base_name, wb_sheet, srv_writer, clt_writer, srv_is_list, clt_is_list) # 解析各列的类型(string、number...) def decode_type(self): @@ -317,13 +320,13 @@ class ArraySheet(Sheet): # 导出object类型的结构,A1格子有object标识 class ObjectSheet(Sheet): - def __init__(self,base_name,wb_sheet,srv_writer,clt_writer): + def __init__(self, base_name, wb_sheet, srv_writer, clt_writer, srv_is_list, clt_is_list): # 记录导出各行的内容 self.srv_ctx = {} self.clt_ctx = {} - super( ObjectSheet, self ).__init__( - base_name,wb_sheet,srv_writer,clt_writer ) + super(ObjectSheet, self).__init__( + base_name, wb_sheet, srv_writer, clt_writer, srv_is_list, clt_is_list) # 解析各字段的类型 def decode_type(self): @@ -405,24 +408,34 @@ class ExcelDoc: sheeter = None srv_value = None clt_value = None - if ARRAY_FLAG == sheet_val : + srv_is_list = False + clt_is_list = False + if ARRAY_FLAG == sheet_val: if wb_sheet.max_row <= ACLT_ROW or wb_sheet.max_column <= AKEY_COL: return None sheeter = ArraySheet - srv_value = wb_sheet.cell( row = ASRV_ROW, column = AKEY_COL ).value - clt_value = wb_sheet.cell( row = ACLT_ROW, column = AKEY_COL ).value - elif OBJECT_FLAG == sheet_val : + srv_value = wb_sheet.cell(row=ASRV_ROW, column=AKEY_COL).value + clt_value = wb_sheet.cell(row=ACLT_ROW, column=AKEY_COL).value + + is_list_val = wb_sheet.cell( + row=ALIST_ROW, column=ALIST_COL).value + if None != is_list_val and is_list_val.find(SRV_LIST) >= 0: + srv_is_list = True + if None != is_list_val and is_list_val.find(CLT_LIST) >= 0: + clt_is_list = True + + elif OBJECT_FLAG == sheet_val: sheeter = ObjectSheet - srv_value = wb_sheet.cell( row = OFLG_ROW, column = OSRV_COL ).value - clt_value = wb_sheet.cell( row = OFLG_ROW, column = OCLT_COL ).value - else : - return None + srv_value = wb_sheet.cell(row=OFLG_ROW, column=OSRV_COL).value + clt_value = wb_sheet.cell(row=OFLG_ROW, column=OCLT_COL).value + else: + return None, srv_is_list, clt_is_list # 没有这两个标识就不是配置表。可能是策划的一些备注说明 - if SRV_FLAG != srv_value or CLT_FLAG != clt_value : - return None - return sheeter + if SRV_FLAG != srv_value or CLT_FLAG != clt_value: + return None, srv_is_list, clt_is_list + return sheeter, srv_is_list, clt_is_list def decode(self,srv_path,clt_path,srv_writer,clt_writer): color_print.printYellow(" start covert: %s \n" % self.file.ljust(44, "*")) diff --git a/src/writer_erlang_erl.py b/src/writer_erlang_erl.py index fe9f70e..eda1680 100644 --- a/src/writer_erlang_erl.py +++ b/src/writer_erlang_erl.py @@ -135,8 +135,6 @@ class ErlangerlWriter(Writer): start_str = 'getList() ->\n [\n ' end_str = "".join( [start_str, value_list_str, " ].\n\n"] ) - list_text_list.append( end_str ) - # 生成 get_list() 函数 get_list_fun = [] keys_len = len(self.keys_list) @@ -175,10 +173,10 @@ class ErlangerlWriter(Writer): get_list_fun.append(val) no_match_str = "".join('getList(' + ", ".join(underline_list) + ') ->\n [].\n\n') get_list_fun.append(no_match_str) - - - value_list = "".join(get_list_fun) - list_text_list.append( value_list ) + if self.is_list == True: + value_list = "".join(get_list_fun) + list_text_list.append( end_str ) + list_text_list.append( value_list ) dict_str = "".join( list_text_list ) return False, dict_str