Какая библиотека C обладает функциональностью для создания рекурсивных глобусов zsh? - PullRequest
2 голосов
/ 14 января 2011

Я написал связывание 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

1 Ответ

0 голосов
/ 14 января 2011

Я почти уверен, что Ruby делает это сам, и, вероятно, это делает код Ruby. Помимо разбора строки и обхода файловой системы, здесь не так много препятствий для реализации. Я не уверен, но я не думаю, что zsh также использует библиотеку для этого, это просто в коде zsh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...