我写了一个nodejs绑定到glob.h(npm install glob
来使用它)。
我真的很想支持zsh的花哨lib/**/*.js
类型的东西,但我似乎无法弄清楚哪个库具有该功能。
我确实不想尝试自己实现它,而且我不是在寻找编程难题的任何聪明的解决方案。我只想要这样的事情:
#include <fancy_glob.h>
int do_fancy_glob (etc) { ... }
任何指针?我很确定Ruby对此有约束力,不是吗?
编辑:
我做了一些研究,发现了有趣的事情。
Guido Van Rossum(Python成名)编写了一个现在在BSD和其他一些unix上发现的实现。它没有包括所谓的“扩展”全局模式(**
等)。当您在程序中执行#include <glob.h>
时,很可能就是您将获得的。 man 3 glob
描述了它的行为。
然而,就我所知,Bash,Zsh和Ksh现在都有扩展的glob实现,都是从头开始编写的。 NetBSD具有GVR实现的可识别后代,并添加了扩展的全局.Ruby在dir.c
中实现了扩展的全局,作为其标准库的一部分(绝对用C编写,而不是ruby)。 Perl似乎已经绑定或实现了所有现存的glob库,我想这是可以预期的。
在我发现的所有内容中,NetBSD似乎与我使用典型的非扩展libc glob(3)
编码最接近,并且其许可最适合我的项目。
另一种方法是从头开始重写它。我可以做到这一点,但我似乎无法找到任何明确的规范或测试套件。有什么建议吗?
答案 0 :(得分:0)
我非常确定Ruby会自己做这件事,而且可能是Ruby代码。除了解析字符串和遍历文件系统之外,实现这一点并没有太多障碍。我不确定,但我不认为zsh也使用了这个库,它只是在zsh代码中。