6 Star 11 Fork 2

翼翼 / oneLineTemplate

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

#oneLineTemplate

简单介绍

在周翼翼之前的工作中, 经常需要做一些修改输出文件的小需求, 以前的做法是直接在代码里hard code. 终于翼翼觉得老是这样做太傻了, 所以就考虑在程序中嵌入一个脚本语言, 比如Tcl, Lua, python之类的. 但是这些开源代码合入到商业产品中来, 稍微有点麻烦, 而且我也不需要嵌入一个脚本语言这多大的功能 我只需要一个"模板", 可以写到配置文件中, 程序读取配置文件中的模板, 然后展开, 这样就不需要每次
需要修改输出文件的时候都重新写代码了.

实现方法

模板的配置是这样的:

abcd{VAR1}dfdadf{VAR2}

即变量用花括号括号括起来, 常量直接写.类似SHELL的语法, 但是少了$,因为多一个$解析起来麻烦一点, 而且也没有必要.

我们把这个模板解析(解析方法见xls), 解析为保存为一个单链表, 链表的每个节点要么是常量, 要么是变量. 并且变量保存一个到符号表的下标, 模板展开时, 根据下标去符号表中找相应的值即可. 而符号表就是一个 "变量名"与"变量值"对的数组, 解析时,每个常量名在这个数组里查找, 以便获取到符号表的下标.

代码中, 直接修改符号表里的值, 即可控制模板展开后的内容.

The MIT License (MIT) Copyright (c) 2014 周翼翼 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一个非常简单的C语言模板库,用于要根据模板和"变量定义"展开成实际的符串. 适合于经常需要修改输出文件格式的场景 展开 收起
C
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/dknlnl/oneLineTemplate.git
git@gitee.com:dknlnl/oneLineTemplate.git
dknlnl
oneLineTemplate
oneLineTemplate
master

搜索帮助