TableML, Table Markup Language, 基于电子表格的标记语言,html
相似JSON, XML, INI,TableML能够做为软件项目的配置标记语言,git
与之不一样的是,您可使用Excel等电子表格编辑软件来配置TableML,自由地添加图标、注释、VB脚本和预编译指令,再由TableML编译器导出干净的TSV格式的配置表表格,编辑方便,使用简单。github
目前提供C#版本的运行时、编译器、代码生成器。sql
感谢Mr.Kelly的开源项目,我基于Kelly的TableML基础,进行扩展增长或修改部分功能。数据库
原始版本地址:https://github.com/mr-kelly/TableML编辑器
扩展版本地址:https://github.com/zhaoqingqing/TableML工具
您可使用Excel编译以下内容,并保存为文件setting/test.xls:单元测试
excel测试文件地址:https://github.com/zhaoqingqing/TableML/blob/custom/TableML/TableMLTests/TestSettings/TestExcel.xls测试
而后使用TableML命令行编译器:ui
TableML.exe --Src setting --To setting2 --CodeFile Code.cs
执行后,将会生成setting2/test.tml文件,打开能够看见编译后内容:
Id |
Value |
int |
string |
1 | Abcdefg |
2 | Yuiop |
另外附带一份Code.cs,自动生成的代码。
以上的例子中,展现了TableML的大部分特性:
TableML
TableMLCompiler
TableMLCompilerConsole
TableMLGUI
TableMLTests
如下功能能够进行自定义或者是我扩展的功能:
1. 从第2列(指定列)开始读
修改SimpleExcelFile.cs中的StartColumnIdx值如:
public const int StartColumnIdx = 1;
2.每一个表对应一个Class文件
调用方法以下:
batchCompiler.CompileTableMLAllInSingleFile(srcDirectory, OutputDirectory, CodeFilePath, templateString, "AppSettings", ".tml", null, true);
示例代码可参考:LocalDebug.cs中的CompileAll()
3.修改生成的代码模版
修改TableML.Compiler.DefaultTemplate中的字符串模版
4.预留指定行,自定义行,好比第6行是字段名,第8行是数据类型,第15行是字段注释
扩展SimpleExcelFile.PreserverRowCount = 预留行 修改SimpleExcelFile.ParseExcel中的Worksheet.GetRow(5);
先读取Excel的行,再读取列,把数据写入到tml文件中。
若是在使用TableMLGUI时,特别占用内存,建议把excel另存为csv格式,或者减小单个excel文件的大小,以减小内存占用。
TableMLGUI提供一键将excel数据插入到sqlite中。
采用sql的事务机制,在插入大量数据的环境下,耗时更短。
同时在控制台输出sql语句方便调试查错。
TableML编译器内置Liquid模板引擎。您能够自定义模板内容,来为不一样的语言生成读表类。
TableML是KSFramework的一部分,用于游戏配置表读取代码,支持热重载、分表等机制。
TableML目前只提供C#版本。当前TableML使用基于Xamarin Studio开发,TableML的C#版本具有了跨平台特性(Windows/Mac/Linux)。