Я написал связывание nodejs с glob.h (npm install glob
для его использования).
Я бы очень хотел поддержать модные вещи типа zsh lib/**/*.js
, но не могувыясните, какая библиотека обладает такой функциональностью.
Я, конечно, не хочу пытаться реализовать ее самостоятельно, и я не ищу какого-либо умного решения головоломки для программирования.Я просто хочу что-то вроде этого:
#include <fancy_glob.h>
int do_fancy_glob (etc) { ... }
Есть указатели?Я почти уверен, что у Руби есть привязка к этому, не так ли?
РЕДАКТИРОВАТЬ:
Я провел некоторые исследования и обнаружил интересные вещи.
Гвидо Ван Россум (из Python Fame) написал реализацию, которая теперь встречается в BSD и некоторых других Unix-системах.Он не включал так называемые «расширенные» шаблоны глобусов (**
и т. Д.).Когда вы делаете #include <glob.h>
в своей программе, скорее всего, это то, что вы получите.man 3 glob
описывает его поведение.
Однако в Bash, Zsh и Ksh теперь все имеют расширенные реализации glob, написанные с нуля, насколько я могу судить.NetBSD имеет узнаваемый потомок реализации GVR с добавленными расширенными глобантами. Ruby расширил глобусы, реализованные в dir.c
как часть своей стандартной библиотеки (определенно написанной на C, а не на ruby).Похоже, что в Perl есть привязки или реализации всех существующих глобальных библиотек, чего и следовало ожидать.
Из всех найденных мною NetBSD кажется наиболее близким к тому, чтоЯ кодировал с типичной не расширенной библиотекой libc glob(3)
, и ее лицензия больше всего подходит для моего проекта.
Другой подход - переписать ее с нуля.Я бы с этим справился, но не могу найти какой-либо четкой спецификации или набора тестов.Есть какие-либо предложения?
РЕДАКТИРОВАТЬ 2: Я переписал его в JS.https://github.com/isaacs/node-glob