Задача к лекции «Node.js» – «Топ-10»

Общие требования

Код должен проходить валидацию JSCS.

Задача

Просматривая ваши душевные отзывы (кстати, большое спасибо за них), мы не могли не пройти мимо одного:

В общем, под конец семестра ваша бабуленька заколебала! С сервантом она вообще норм так зашла, с котятками ещё ничего, а вот с макетом и (обоже, она пробралась и в скрипты!) Котлом алхимика -- ужс. Переборщили :( Далее -- котики. Если честно, никогда не была фанатом котов. Но после такого их обилия.. В общем, коты -- огонь тема :)

И нам захотелось понять действительно ли котиков и бабуленек было так много.

Предлагаем вам помочь нам и написать небольшой модуль, который проанализирует тексты задач к первому семестру, соберёт статистику встречаемости слов, выведет топ и тем самым подтвердит или опровергнет наблюдение автора отзыва.

Необходимо экспортировать из модуля метод top(n), который возвращает топ n слов в формате:

котик 42
бабуленька 19
пиратка 8

Важно, чтобы статистика считалась с учётом однокоренных: «бабушка» и «бабуленька» – одно слово, «кот» и «котик» – тоже. В статистике не надо учитывать предлоги, союзы и знаки препинания.

Второй метод, который необходимо экспортировать – count(word), который возвращает число повторений данного слова:

const counter = require('./counter.js');

counter.count('котик');
// 42

counter.top(2);
// котик 42
// бабуленька 19

Для того, чтобы получить тексты задач, рекомендуем воспользоваться Github API: https://developer.github.com/v3/

Важно, не класть ключ доступа (токен) к Github в репозиторий, а положить в файл key.txt, не забыв добавить его в исключения .gitignore.

В комментариях к пуллу вы можете поделится собранной статистикой – «топ 10 слов»

Дополнительное задание

В качестве дополнительного задания предлагается использовать потоки (Streams).