2016-06-27 Минутка юмора nodejs
Материал из YourcmcWiki
Задача: вытащить часть пути до первой части, содержащей glob-паттерн (glob — это стандартные шаблоны имён файлов: * ? [] {}).
Решение: один регэксп, да? Нееееет!
Для node.js есть целая библиотека glob-parent. Очень содержательная:
var path = require('path'); var isglob = require('is-glob'); module.exports = function globParent(str) { str += 'a'; // preserves full path in case of trailing path separator do {str = path.dirname(str)} while (isglob(str)); return str; };
Не, ну наверно там парсинг сложный, да? Давайте посмотрим, как написан is-glob:
var isExtglob = require('is-extglob'); module.exports = function isGlob(str) { return typeof str === 'string' && (/[*!?{}(|)[\]]/.test(str) || isExtglob(str)); };
Гм. Ну что ж, может вся хитрость в is-extglob?
module.exports = function isExtglob(str) { return typeof str === 'string' && /[@?!+*]\(/.test(str); };
Это весь код этих 3-х библиотек, ну за исключением всяких README и package.json, конечно… которые там в 5 раз больше.
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.