Разработать мини-библиотеку для поиска элементов на Vanilla JS
Сейчас нам нужно написать очень сильно упрощенный аналог Sizzle, библиотеки, используемой jQuery для поиска элементов по CSS3-селекторам. При этом набор возможностей и используемых селекторов ограничен и регламентирован:
<script>
// Можно выбирать по названию класса
$('.some-elm');
// Можно выбирать по ID
$('#someElm');
// Можно выбирать по названию тега
$('input');
// Можно выбирать любые элементы (разумеется, это будет иметь смысл в рамках контекста)
$('*');
// Можно выбирать по точному соответствую атрибута
$('[name="email"]');
// Можно сочетать селекторы применительно к одному элементу
$('input[name="email"]');
$('label.special.for_email');
$('#header.callout');
// Селекторы можно группировать, определяя вложенность элементов (с любой вложенностью)
$('.parent-elm .child-elm');
// Можно задавать родительское взаимотношение элементов
$('.container > .children');
$('.container > .children > *');
// Селекторы можно перечислять через запятую, чтобы объединить результаты
$('textarea, input[type="text"]');
// Вторым аргументом можно задавать DOM-элемент, определяющий контекст поиска
$('textarea, input[type="text"]', document.body);
</script>
Нужно реализовать только перечисленные выше возможности, т.к. мы максимально экономим место.
По сути, необходимо на чистом JS написать одну функцию — $, которая реализует обозначенный выше функционал в обозначенных выше браузерах. Это отличная возможность попрактиковаться в Vanilla JS!
Предлагайте стоимость и сроки, а также приложите ссылку на 2-3 ваших работы на JavaScript. (Оптимально — ссылку на GitHub).