# oneLineTemplate **Repository Path**: dknlnl/oneLineTemplate ## Basic Information - **Project Name**: oneLineTemplate - **Description**: 一个非常简单的C语言模板库,用于要根据模板和"变量定义"展开成实际的符串. 适合于经常需要修改输出文件格式的场景 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 11 - **Forks**: 2 - **Created**: 2014-12-12 - **Last Updated**: 2022-09-27 ## Categories & Tags **Categories**: utils **Tags**: None ## README #oneLineTemplate ## 简单介绍 在周翼翼之前的工作中, 经常需要做一些修改输出文件的小需求, 以前的做法是直接在代码里hard code. 终于翼翼觉得老是这样做太傻了, 所以就考虑在程序中嵌入一个脚本语言, 比如Tcl, Lua, python之类的. 但是这些开源代码合入到商业产品中来, 稍微有点麻烦, 而且我也不需要嵌入一个脚本语言这多大的功能 我只需要一个"模板", 可以写到配置文件中, 程序读取配置文件中的模板, 然后展开, 这样就不需要每次\ 需要修改输出文件的时候都重新写代码了. ## 实现方法 模板的配置是这样的: ```shell abcd{VAR1}dfdadf{VAR2} ``` 即变量用花括号括号括起来, 常量直接写.类似`SHELL`的语法, 但是少了`$`,因为多一个`$`解析起来麻烦一点, 而且也没有必要. 我们把这个模板解析(解析方法见xls), 解析为保存为一个单链表, 链表的每个节点要么是常量, 要么是变量. 并且变量保存一个到符号表的下标, 模板展开时, 根据下标去符号表中找相应的值即可. 而符号表就是一个 "变量名"与"变量值"对的数组, 解析时,每个常量名在这个数组里查找, 以便获取到符号表的下标. 代码中, 直接修改符号表里的值, 即可控制模板展开后的内容.