diff --git a/README.md b/README.md index a4d39f2..36bc949 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ luban相较于常规的excel导表工具有以下核心优势: - 增强了excel格式。可以比较简洁地excel配置**任意复杂**的数据,像子结构、结构列表,以及更复杂的深层次的嵌套结构都能直接解析处理。 - 完备的类型系统和多原始数据支持(xml、json、lua、yaml),可以轻松表达和解析**任意复杂**的数据。意味着传统excel导表工具无法处理的技能、行为树、副本等等复杂配置,luban也能够统一处理了,彻底将程序从复杂的配置解析中完全解放出来。 -- 完善的工作流支持。如id的外键引用检查;资源合法性检查;灵活的数据源定义(拆表或者多表合一);灵活的分组导出机制;多种本地化支持;生成极快(日常迭代300ms以内)等等。 +- 完善的工作流支持。如id的外键引用检查;资源合法性检查;灵活的数据源定义(拆表或者多表合一);灵活的分组导出机制;多种本地化支持;生成极快(日常迭代300ms以内)。Excel2TextDiff工具方便diff查看excel文件的版本间差异。LubanAssistant Excel插件支持把json、lua、xml等文本格式的配置数据加载到excel中,批量编辑处理,最后再保存回原文件,较好地解决大型项目中多人合作数据编辑冲突合并的问题,较好解决在编辑器中制作的配置难以在excel中批量修改的问题。 ====**如果觉得不错,烦请点个star,你的支持会给予我们巨大动力 ^_^**==== @@ -96,6 +96,10 @@ luban相较于常规的excel导表工具有以下核心优势: - 其他家基于js的小程序平台 - 其他所有支持lua的引擎和平台 - 其他所有支持js的引擎和平台 +- 扩展工具 + - Excel2TextDiff。将excel转成文本后再diff,清晰对比excel版本之间内容变化。 + - **[开发中,马上...]LubanAssistant**,Luban的Excel插件。支持把json、lua、xml等文本格式的配置数据加载到excel中,批量编辑处理,最后再保存回原文件,较好地解决大型项目中多人合作数据编辑冲突合并的问题,较好解决在编辑器中制作的配置难以在excel中批量修改的问题。 + ## 增强的excel格式 luban支持在excel中解析任意复杂的数据结构,哪怕复杂如技能、行为树(但在实践中一般使用编辑器制作这些数据,以json格式保存,而不会在excel里填写)。下面从简单到复杂展示在luban中配置这些数据的方式。 @@ -341,6 +345,15 @@ binary格式占空间最小,lua其次,json最大。 - [TODO] 任意粒度的数据本地化(不仅仅是text及记录级别) +### Excel2TextDiff +将excel文件转成text,再调用diff工具对比。与TortoiseGit、TortoiseSvn等版本管理工具良好配合。 + +![pipeline](docs/images/examples/d_70.jpg) + +### Luban Excel助手插件 + +开发中。敬请期待 + ## 性能测试数据 硬件: @@ -363,7 +376,6 @@ binary格式占空间最小,lua其次,json最大。 | lua | 17.323 s| 739 ms | 433 K | 212 M | ## 路线图 - - [ ] 新增 unity 内置编辑器 - [ ] 新增 unreal 内置编辑器 - [ ] 补充单元测试 diff --git a/docs/images/examples/d_70.jpg b/docs/images/examples/d_70.jpg new file mode 100644 index 0000000..386e5ce Binary files /dev/null and b/docs/images/examples/d_70.jpg differ diff --git a/src/Luban.Server/Templates/config/rust_json/table.tpl b/src/Luban.Server/Templates/config/rust_json/table.tpl index 6efb5c9..8285c0f 100644 --- a/src/Luban.Server/Templates/config/rust_json/table.tpl +++ b/src/Luban.Server/Templates/config/rust_json/table.tpl @@ -53,7 +53,7 @@ impl {{name}}{ #[allow(dead_code)] pub fn get_data_list(self:&{{name}}) -> &Vec> { &self.data_list } #[allow(dead_code)] - pub fn get(self:&{{name}}, key: {{rust_define_type key_type}}) -> std::option::Option<&std::rc::Rc<{{rust_define_type value_type}}>> { self.data_map.get(&key) } + pub fn get(self:&{{name}}, key: &{{rust_define_type key_type}}) -> std::option::Option<&std::rc::Rc<{{rust_define_type value_type}}>> { self.data_map.get(key) } {{~else~}} if !__js.is_array() || __js.len() != 1 { return Err(LoadError{});