开源夏令营之foldcolumn工具及解决方案之中期总结

近期工作

根据需求实现了所有基本功能(除去包含硬回车和浮点数精度处理),对代码进行了简单测试及优化整理(接下来继续),同时对前面博客内容根据具体实现进行了相应修改。

存在问题

浮点数精度问题

浮点数要右对齐,主要问题是怎样识别浮点数,我认为要是每次输出都识别是否是浮点数会影响效率,而且数字占多少比例按浮点数处理(比如 "300.5元可买500个" 怎样处理)。简单的方法是用户指定哪些列是数字(目前的做法),或者是根据第一行该列是否是数字来决定。

此问题已在张老师的指导下找到了解决的方法,在实现中。

列宽调整优化问题

从文件读入数据时,可以使用先读入一遍文件,按各列字符宽度比例确定列宽。在输出时实现了贪婪法自动换行(参见自动换行-最小长度),但是这种情况下列尾可能会存在很多空白字符,需要稍微调整列宽减少空字符,暂时还没找到好的方法。

程序中尽量不要exit

这点我开始没能体会到,在张老师的指点下,感觉这样是有必要的,原因如下:

foldcolumn作为命令行绘制表格工具,肯定会和其他命令实现绘制表格,其他命令提供数据源,是关键业务,表格输出只是辅助功能,如果foldcolum中某些条件不符合就退出的话,会导致终止关键业务(准确说应该是foldcolum获取了其他命令的输出,又没打印出来),所以不应该exit,而是要容忍这些不符合条件的数据,比如原样输出。

常见linux平台移植性问题

主要是考虑

(1)用到的非标准C函数

(2)C99中的宽字符处理函数:heirloom/fold中直接使用,breaktext.c中是通过USE_WCHAR_FUNCTIONS宏来判断有无宽字符处理函数的。

(3)Unix,CP/M,BBS绘制表格的移植性


学到知识

字符编码与C宽字符处理相关

Libunibreak库与自动换行算法,参见自动换行算法

常用命令行绘制表格方法,参见绘制表格

Git原理与使用

下一步计划

(1)进一步测试、完善功能

(2)相似项目的兼容性优化,如Heirloom、groff

(3)*inux平台移植性考虑

(4)完善Makefile,使其适于常见Linux环境

(5)manpage

(6)rpm

你可能感兴趣的:(column,fold,开源夏令营,foldcolumn)