配置表导出工具
pip install -r requirements.txt
python -m cfg_exporter -h
- 支持规则检查
- 枚举生成
- 可支持多种数据结构导入
csvexcelmemory- 扩展:继承
Table类,实现load_table方法,参考csv_table.pymemory_table.pyxlsx_table.py
- 可支持多种数据结构导出
csvxlsxjsonerlanglua可以生成深度优化的配表文件python可以生成深度优化的配表文件- 通过模板支持自定义格式
- ....
- 命名规则
^[a-zA-Z]([a-zA-Z0-9]|_)*包括字段名、常量名
int整数float浮点数strUTF-8字符串langUTF-8多语言文本iter可迭代结构[]表示列表结构()表示元祖
raw原始类型,内容将原样输出。- 此数据类型无法应用规则检查
- 在强类型语言中以UTF-8字符串形式输出
- 数据类型细分
在数据类型定义后通过:分隔,描述配表生成时使用的具体类型
c#- 整数、浮点数
int:byte8 位无符号整数int:sbyte8 位有符号整数类型int:short16 位有符号整数类型int:ushort16 位无符号整数类型int或int:int32 位有符号整数类型int:uint32 位无符号整数类型int:long64 位有符号整数类型int:ulong64 位无符号整数类型float或float:float32 位单精度浮点型float:double64 位双精度浮点型
- 可迭代结构(仅用作演示,实际可以随便组合)
iter:List<int>表示元素为32位有符号整数类型的列表iter:Tuple<int, int>表示双元素为32位有符号整数类型的元祖iter:List<Tuple<int, int>>表示元素为双32位有符号整数类型的元祖的列表
- 整数、浮点数
规则之间可以 通过|分隔每个规则
-
示例
主键列、常量的取值列 key:1 | const:value 唯一 非空 范围100-1000 值引用于item.id列 unique | not_empty | min:100 | max:1000 | ref:item.id -
唯一规则
全表不可重复指定的规则
规则名称 描述 参数类型 示例 key:number标记当前列为主键列,有多个主键列可多次标记
主键列不可为空,联合主键不可重复,编号从1开始intkey:1当前列为主键,编号为1const:type标记当前列作为常量的一部分,并在导出配表时导出 strtype:name当前列为常量名type:value当前列为常量值(可选,默认从1开始)type:desc当前列为常量述(可选,默认为空) -
普通规则
可重复指定的规则
规则名称 描述 参数类型 示例 unique检查当前列非空值是否全列唯一
如果指定在struct规则中则检查当前单元格的值是否全结构唯一uniquenot_empty检查当前列的值是否无空值 not_emptydefault:any如果当前列的值为空,则赋予缺省值 anydefault:0default:文案整理中default:[]size:min[~max]检查当前列非空值的取值或长度范围 intfloat类型的值,检查其大小striter类型的值,检查其长度intsize:1~99数值或长度1 - 99size:1~数值或长度1 - +∞size:~99数值或长度 -∞ - 99size:99数值或长度恒等于99source:path检查当前列非空值引用资源是否存在 str要检查资源目录的相对或绝对路径 source:source/uisource:D:/project/source/uiref:table_name.field_name检查当前列非空值是否在 table_name表field_name列中存在strref:item.id当前的列值引用于item表的id列的值struct:rules对 iter类型结构中的各项值进行规则检查
仅支持指定普通规则iter示例1 [(1,100,"描述1"),(2,200,"描述2")]struct:[(unique|ref:item.id,min:0|max:10000,_)]
对12进行uniqueref规则检查
对100200进行minmax规则检查_表示占位符
示例2["abc",[1,2,3],(4,5,6)]struct:[max:10]
对"abc"[1,2,3](4,5,6)进行长度检查_无特殊意义,仅用作占位,配合 struct规则使用
工具支持通过多语言模板在导出配表时动态替换输出内容
具体格式请参考模板
- 将配置表中需要翻译的字段类型标记为
lang - 通过
--export_lang_template命令行参数导出语言模板- 收集所有配表中
lang类型的字段列 - 将其整理到一个文件中
- 收集所有配表中
- 导出配表时通过
--lang_template命令行参数指定多语言模板文件
有任何意见或建议随时欢迎联系我,或提交pr