glob.h에 대한 nodejs 바인딩을 작성했습니다 (사용하려면 npm install glob
).zsh의 재귀 적 glob을 수행하는 기능을 가진 C 라이브러리는 무엇입니까?
zsh의 멋진 lib/**/*.js
유형을 지원하고 싶습니다.하지만 어떤 라이브러리에 해당 기능이 있는지 알 수 없습니다.
필자는 직접 구현하려고하지 않으며 프로그래밍 퍼즐에 대한 영리한 솔루션을 찾고 있지 않습니다. 다음과 같은 내용을 원합니다.
#include <fancy_glob.h>
int do_fancy_glob (etc) { ... }
모든 포인터가 있습니까? 루비가 이걸 구속력이 있다고 확신 하나?
편집 :
나는 몇 가지 조사를했고, 재미있는 물건을 발견했다.
Guido Van Rossum (Python 명성)은 BSD 및 일부 유닉스에서 발견 된 구현을 작성했습니다. 이른바 "확장 된"그록 패턴 (**
등)은 포함되지 않았습니다. 프로그램에서 #include <glob.h>
을 수행하면 이것이 가장 가능성이 높습니다. man 3 glob
은 동작을 설명합니다.
그러나 Bash, Zsh 및 Ksh의 모든 확장 glob 구현은 모두 처음부터 작성되었으며 현재까지는 알 수 있습니다. NetBSD는 확장 된 glob을 추가하여 GVR 구현의 자손입니다. Ruby는 dir.c
에 구현 된 확장 된 glob을 표준 라이브러리의 일부로 사용합니다 (루비가 아닌 C로 작성). 펄은 의 바인딩이나 구현을 가지고있는 것처럼 보입니다. 모두 glob 라이브러리가 존재할 것으로 예상됩니다.
내가 발견 한 모든 것 중에서 NetBSD는 일반적인 비 확장형 libc glob(3)
으로 코딩 한 것과 가장 유사하게 보이며 라이센스는 내 프로젝트에 가장 적합합니다.
또 다른 접근법은 처음부터 다시 작성하는 것입니다. 그 일을하는 것이 좋겠지 만 명확한 사양이나 테스트 세트를 찾을 수없는 것 같습니다. 어떤 제안이 있니?
편집 2 : JS로 다시 작성했습니다. https://github.com/isaacs/node-glob
루비는이 작업을 수행하지만 루비 코드가 아닌 C로 작성되었습니다. 루비 소스에서 dir.c을 확인하십시오. – isaacs