Files
2026-05-23 22:10:14 +08:00

152 lines
5.9 KiB
Erlang

%%----------------------------------------------------
%% 数据配置文件相关数据结构
%% @author yeahoo2000@gmail.com
%% @end
%%----------------------------------------------------
-define(LANGUAGE, en). %% 当前语言
-define(LANGUAGE_ALL, ["en","cn", "qq", "zh_tw", "jp"]). %% 所有语言
-define(SRV_INC_PATH, "../../server/inc/"). %% 服务端inc目录
-define(SRV_PATH, "../../server_core_data/data/"). %% 服务端目录
%% -define(SRV_PATH, "./out/"). %% 服务端目录
-define(CLI_PATH, "../../client/src/config/"). %% 客户端目录
-define(CLI_H5_PATH, "../../client_h5/src/config/"). %% 客户端目录
-define(CLI_JSON_PATH, "../../client_h5/src/config/"). %% 客户端目录
-define(PHP_PATH, "./out/"). %% PHP配置文件目录
-define(DEF_PATH, "./json_data/"). %% 默认目录
-define(DEF_DATA, "./data/"). %% 默认数据目录
-define(DEF_LUA, "./lua_data/"). %% 默认目录
%% -define(DEF_DATA, "./template/"). %% 默认数据目录
-define(PROC_NUM, 3). %% 进程数
-define(LANG_COLS, [
#f_column{type = term, name = lang_white, desc = "语言白名单", mod = lang, comment = lists:concat(["空表示所有 格式:cn,jp\n所有项:", string:join(?LANGUAGE_ALL, ",")]), val = "[]"}
,#f_column{type = term, name = lang_black, desc = "语言黑名单", mod = lang, comment = lists:concat(["空表示所有 格式:cn,jp\n所有项:", string:join(?LANGUAGE_ALL, ",")]), val = "[]"}
]).
%% 指针加一
-define(inc_row, put(row_idx, get(row_idx) + 1)).
-define(inc_col, put(col_idx, get(col_idx) + 1)).
-define(inc_names, put(names_idx, get(names_idx) + 1)).
-define(inc_sheets, put(sheets_idx, get(sheets_idx) + 1)).
%% 重置指针
-define(reset_row, put(row_idx, 1), put(rows, [])).
-define(reset_col, put(col_idx, 1), put(cells, [])).
-define(reset_names, put(names_idx, 1), put(names, []), put(valid, []), put(names_def, [])).
-define(reset_sheets, put(sheets_idx, 1), put(sheets, [])).
%% 配置说明
-record(data_cfg, {
%% 配置名
name :: atom()
%% 描述
,desc = "" :: string()
%% 生成的对应record
,record :: atom()
%% 模板需要垂直方向需要拆分的列数
,splitv = 1 :: pos_integer()
%% 头部占用行数
,head_rows = 1 :: pos_integer()
%% 数据文件需要引入的头文件
,inc = [] :: [string()]
%% 数据源文件
,source = "" :: string()
%% 目标文件
,target = "" :: string()
%% LuaName
,lua_name = "" :: string()
%% JsName
,js_name = "" :: string()
%% 语言版本检查
,lang = false :: boolean()
%% 同时生成校验文件同来校验其它文件
,valid_file = false :: boolean()
%% 数据工作表描述
,sheet = [] :: list()
%% 数据列描述
,column = [] :: list()
%% 服务端回调
,callback = [] :: list()
,callback_hrl = [] :: list()
%% 客户端Lua回调函数
,callback_cli = [] :: list()
%% 客户端JS回调函数
,callback_js = [] :: list()
%% 客户端Json回调函数
,callback_json = [] :: list()
%% PHP配置生成回调
,callback_php = [] :: list()
%% 追加数据表
,add_data_xml = [] :: list()
%% 数据连接合并处理{Name新工作区名称, Name1工作区名称, Name2:查找工作区名称, Keys::合并连接键}
,merge_data = [] :: list()
}
).
%% 列定义
-record(f_column, {
%% 列类型
type = int :: int | float | str | bstr | nstr | term | list | tuple | single | rec | atom | kv | const | func
%% 特殊的列类型回调处理函数
,type_func
%% 列名称
,name :: atom()
%% record字段名 默认为name
,rec_name :: atom()
%% 取第几列内容
,col_pos = -1 :: pos_integer()
%% 是否主键 唯一值
,primary = false :: boolean()
%% 列表校验方式
,valid_list = [] :: false | list()
%% 是否需要外增加[]
,add_list_sign = true :: boolean()
%% 列显示宽度
,width = 0 :: non_neg_integer()
%% 最小值长度
,min = 0 :: integer()
%% 最大值长度
,max = 9999999999 :: integer()
%% 扩展数据校验方式
,ext_valid :: any()
%% 说明
,desc = "" :: string()
%% 子项目
,fields = [] :: list()
%% 模式
,mod = server :: all | desc | server | client | php | lang
%% 子项拆分符号
,spilt_str = "," :: string()
%% 行拆分符号
,spilt_line = "$$$" :: string()
%% 记录名
,rec :: atom()
%% 映射类型
,kv_type :: undefined | atom() | {m, f, a}
%% kv放在独立工作区
,kv_sheet = false :: false | true
%% 原值 未作任何处理
,cell_val :: term()
%% 值 服务端
,val :: term()
%% 值 客户端
,val_cli :: term()
%% 备注
,comment = "" :: string()
%% 默认值 (客户端使用)
,def_cli_val :: term()
%% 是否允许空值
,is_null = true :: false | true
%% 是否构造客户端kv值
,is_cli_kv = true :: false | true
%% 测试 false:不指印 true:指印所有行 pos_integer():指定行 {MinRow, MaxRow}
,debug = false :: false | true | pos_integer() | {pos_integer(), pos_integer()}
%% 转换处理(time)
,convert :: atom()
%% 字符替换处理
,replace = [] :: list()
}
).